Skip to content

Commit b1eb47f

Browse files
author
Artiom N.
committed
Flag in SIGURG example removed
Thanks to Maxim Dmitrichenko for the investigation.
1 parent 4433944 commit b1eb47f

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/book01/ch06/cpp/oob_example/oob_server_async.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ extern "C"
2020

2121

2222
constexpr size_t buffer_size = 255;
23-
volatile std::atomic<bool> oob_flag = false;
2423

2524

2625
void 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

Comments
 (0)