Hello, I have found a few problems of AF_INET domain socket regarding out-of-band data. 1. recv() with MSG_OOB flag eats normal data if no OOB data is sent yet. 2. Calling recv() with MSG_OOB flag is blocked if no OOB data is sent yet. 3. Calling recv() without MSG_OOB flag after receiving OOB data is blocked even if received data exist in buffer. Regarding problem 1 and 2, POSIX states as follows about recv(). [EINVAL] The MSG_OOB flag is set and no out-of-band data is available. http://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html Attached is a sample program to reproduce these problems. Argument to this program specifies the test mode. 0: cause problem 1 2: cause problem 2 3: cause problem 3 Expected results: debian:~/OOB> ./server_client 0 recv(OOB): Invalid argument OOB : (-1) NORMAL: 1234567890 (10) debian:~/OOB> ./server_client 1 OOB : A (1) NORMAL: 1234567890 (10) debian:~/OOB> ./server_client 2 recv(OOB): Invalid argument OOB : (-1) NORMAL: 1234567890 (10) debian:~/OOB> ./server_client 3 OOB : A (1) NORMAL: 1234567890 (10) debian:~/OOB> Result on cygwin: [yano@Express5800-S70 ~/OOB]$ ./server_client 0 OOB : 1234567890 (10) NORMAL: (0) [yano@Express5800-S70 ~/OOB]$ ./server_client 1 OOB : A (1) NORMAL: 1234567890 (10) [yano@Express5800-S70 ~/OOB]$ ./server_client 2 [yano@Express5800-S70 ~/OOB]$ ./server_client 3 OOB : A (1) [yano@Express5800-S70 ~/OOB]$ Only the result of test mode 1 is as expected. I have confirmed this occurs in both latest 32bit and 64 bit cygwin. -- Takashi Yano