patch
どうやら、MAX_SECS_TO_LINGERは30らしい。
MAX_SECS_TO_LINGERは16に書き変えて、select()で受信可能になるまで
待ってみるコードを作ってみた。とりあえず、動いてるっぽい。
とりあえず、火曜日に内部で報告してみよう。
fd_set rfds; while (1) { tv.tv_sec = SECONDS_TO_LINGER; tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(s, &rfds); if(select(s+1, &rfds, NULL, NULL, &tv) > 0) { if(FD_ISSET(s, &rfds)) { nbytes = jk_tcp_socket_recvfull(s, dummy, sizeof(dummy)); if (nbytes <= 0) break; } } ttl += SECONDS_TO_LINGER; if (ttl > 16) break; }