@@ -20,13 +20,11 @@ extern "C"
2020
2121
2222constexpr size_t buffer_size = 255 ;
23- volatile std::atomic<bool > oob_flag = false ;
2423
2524
2625void signal_handler (int signal)
2726{
2827 std::cout << " SIGURG [" << signal << " ] received" << std::endl;
29- oob_flag = true ;
3028}
3129
3230
@@ -92,23 +90,23 @@ int main(int argc, const char *const argv[])
9290 throw std::system_error (sock_wrap.get_last_error_code (), std::system_category (), " sockatmark" );
9391 break ;
9492 case 1 :
95- if (!oob_flag)
96- {
97- recv_data (sock_wrap, client_sock, data_buff);
98- continue ;
99- }
100- std::cout << " OOB data received..." << std::endl;
10193 char oob_data;
102- if (recv (client_sock, &oob_data, 1 , MSG_OOB) < 0 )
94+ std::cout << " OOB data received..?" << std::endl;
95+ if (-1 == recv (client_sock, &oob_data, 1 , MSG_OOB))
10396 {
97+ if (EINVAL == sock_wrap.get_last_error_code ())
98+ {
99+ std::cout << " EINVAL - this is not OOB" << std::endl;
100+ recv_data (sock_wrap, client_sock, data_buff);
101+ continue ;
102+ }
104103 throw std::system_error (sock_wrap.get_last_error_code (), std::system_category (), " recv oob" );
105104 }
106105 else
107106 {
108107 std::cout << " OOB data = " << oob_data << std::endl;
109108 }
110109
111- oob_flag = false ;
112110 break ;
113111 case 0 :
114112 std::cout << " sockatmark() is 0" << std::endl;
0 commit comments