Skip to content

Commit a81565a

Browse files
author
Artiom N.
committed
OOB examples code synchronized
1 parent 6bbc5c8 commit a81565a

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

src/book01/ch06/cpp/oob_example/oob_server.cpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ int main(int argc, const char *const argv[])
6262

6363
std::array<char, buffer_size> data_buff;
6464

65-
bool oob_printed = false;
66-
6765
while (true)
6866
{
6967
switch (sockatmark(client_sock))
@@ -72,24 +70,23 @@ int main(int argc, const char *const argv[])
7270
throw std::system_error(errno, std::system_category(), "sockatmark");
7371
break;
7472
case 1:
75-
if (oob_printed)
76-
{
77-
recv_data(sock_wrap, client_sock, data_buff);
78-
continue;
79-
}
80-
std::cout << "OOB data received..." << std::endl;
81-
82-
char oob_data;
83-
if (-1 == recv(client_sock, &oob_data, 1, MSG_OOB))
73+
std::cout << "OOB data received..?" << std::endl;
74+
if (char oob_data = 0; -1 == recv(client_sock, &oob_data, 1, MSG_OOB))
8475
{
76+
if (EINVAL == sock_wrap.get_last_error_code())
77+
{
78+
std::cout << "EINVAL - this is not OOB" << std::endl;
79+
recv_data(sock_wrap, client_sock, data_buff);
80+
continue;
81+
}
8582
throw std::system_error(sock_wrap.get_last_error_code(), std::system_category(), "recv oob");
8683
}
87-
std::cout << "OOB data = " << oob_data << std::endl;
88-
oob_printed = true;
84+
else
85+
std::cout << "OOB data = " << oob_data << std::endl;
8986
break;
9087
case 0:
88+
std::cout << "sockatmark() is 0" << std::endl;
9189
recv_data(sock_wrap, client_sock, data_buff);
92-
oob_printed = false;
9390
break;
9491
default:
9592
throw std::runtime_error("unexpected sockatmark");

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ int main(int argc, const char *const argv[])
7171
throw std::system_error(errno, std::system_category(), "signal");
7272
}
7373

74-
std::array<char, buffer_size> data_buff;
75-
7674
assert(argv[1]);
7775
auto server_sock = socket_wrapper::create_tcp_server(argv[1]);
7876
auto client_sock = socket_wrapper::accept_client(server_sock);
@@ -82,6 +80,9 @@ int main(int argc, const char *const argv[])
8280
throw std::system_error(errno, std::system_category(), "fcntl");
8381
}
8482

83+
84+
std::array<char, buffer_size> data_buff;
85+
8586
while (true)
8687
{
8788
switch (sockatmark(client_sock))
@@ -90,9 +91,8 @@ int main(int argc, const char *const argv[])
9091
throw std::system_error(sock_wrap.get_last_error_code(), std::system_category(), "sockatmark");
9192
break;
9293
case 1:
93-
char oob_data;
9494
std::cout << "OOB data received..?" << std::endl;
95-
if (-1 == recv(client_sock, &oob_data, 1, MSG_OOB))
95+
if (char oob_data = 0; -1 == recv(client_sock, &oob_data, 1, MSG_OOB))
9696
{
9797
if (EINVAL == sock_wrap.get_last_error_code())
9898
{
@@ -103,10 +103,7 @@ int main(int argc, const char *const argv[])
103103
throw std::system_error(sock_wrap.get_last_error_code(), std::system_category(), "recv oob");
104104
}
105105
else
106-
{
107106
std::cout << "OOB data = " << oob_data << std::endl;
108-
}
109-
110107
break;
111108
case 0:
112109
std::cout << "sockatmark() is 0" << std::endl;

0 commit comments

Comments
 (0)