Loading tests/server/sws.c +32 −10 Original line number Diff line number Diff line Loading @@ -1403,10 +1403,13 @@ static void http_connect(curl_socket_t *infdp, if(rc > 0) { /* socket action */ bool tcp_fin_wr; if(got_exit_signal) break; tcp_fin_wr = FALSE; /* ---------------------------------------------------------- */ /* passive mode FTP may establish a secondary tunnel */ Loading Loading @@ -1505,6 +1508,7 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] got %zd, STOP WRITING client", data_or_ctrl(i), rc); shutdown(clientfd[i], SHUT_WR); poll_client_wr[i] = FALSE; tcp_fin_wr = TRUE; } else { logmsg("[%s] SENT %zd bytes to client", data_or_ctrl(i), rc); Loading @@ -1524,6 +1528,7 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] got %zd, STOP WRITING server", data_or_ctrl(i), rc); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; tcp_fin_wr = TRUE; } else { logmsg("[%s] SENT %zd bytes to server", data_or_ctrl(i), rc); Loading Loading @@ -1557,7 +1562,34 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] DISABLED WRITING client", data_or_ctrl(i)); shutdown(clientfd[i], SHUT_WR); poll_client_wr[i] = FALSE; tcp_fin_wr = TRUE; } } if(serverfd[i] != CURL_SOCKET_BAD) { if(poll_server_rd[i] && !poll_client_wr[i]) { logmsg("[%s] DISABLED READING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_RD); poll_server_rd[i] = FALSE; } if(poll_server_wr[i] && !poll_client_rd[i] && !tos[i]) { logmsg("[%s] DISABLED WRITING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; tcp_fin_wr = TRUE; } } } } if(tcp_fin_wr) /* allow kernel to place FIN bit packet on the wire */ wait_ms(250); /* socket clearing */ for(i = 0; i <= max_tunnel_idx; i++) { int loop; for(loop = 2; loop; loop--) { if(clientfd[i] != CURL_SOCKET_BAD) { if(!poll_client_wr[i] && !poll_client_rd[i]) { logmsg("[%s] CLOSING client socket", data_or_ctrl(i)); sclose(clientfd[i]); Loading @@ -1572,16 +1604,6 @@ static void http_connect(curl_socket_t *infdp, } } if(serverfd[i] != CURL_SOCKET_BAD) { if(poll_server_rd[i] && !poll_client_wr[i]) { logmsg("[%s] DISABLED READING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_RD); poll_server_rd[i] = FALSE; } if(poll_server_wr[i] && !poll_client_rd[i] && !tos[i]) { logmsg("[%s] DISABLED WRITING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; } if(!poll_server_wr[i] && !poll_server_rd[i]) { logmsg("[%s] CLOSING server socket", data_or_ctrl(i)); sclose(serverfd[i]); Loading Loading
tests/server/sws.c +32 −10 Original line number Diff line number Diff line Loading @@ -1403,10 +1403,13 @@ static void http_connect(curl_socket_t *infdp, if(rc > 0) { /* socket action */ bool tcp_fin_wr; if(got_exit_signal) break; tcp_fin_wr = FALSE; /* ---------------------------------------------------------- */ /* passive mode FTP may establish a secondary tunnel */ Loading Loading @@ -1505,6 +1508,7 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] got %zd, STOP WRITING client", data_or_ctrl(i), rc); shutdown(clientfd[i], SHUT_WR); poll_client_wr[i] = FALSE; tcp_fin_wr = TRUE; } else { logmsg("[%s] SENT %zd bytes to client", data_or_ctrl(i), rc); Loading @@ -1524,6 +1528,7 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] got %zd, STOP WRITING server", data_or_ctrl(i), rc); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; tcp_fin_wr = TRUE; } else { logmsg("[%s] SENT %zd bytes to server", data_or_ctrl(i), rc); Loading Loading @@ -1557,7 +1562,34 @@ static void http_connect(curl_socket_t *infdp, logmsg("[%s] DISABLED WRITING client", data_or_ctrl(i)); shutdown(clientfd[i], SHUT_WR); poll_client_wr[i] = FALSE; tcp_fin_wr = TRUE; } } if(serverfd[i] != CURL_SOCKET_BAD) { if(poll_server_rd[i] && !poll_client_wr[i]) { logmsg("[%s] DISABLED READING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_RD); poll_server_rd[i] = FALSE; } if(poll_server_wr[i] && !poll_client_rd[i] && !tos[i]) { logmsg("[%s] DISABLED WRITING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; tcp_fin_wr = TRUE; } } } } if(tcp_fin_wr) /* allow kernel to place FIN bit packet on the wire */ wait_ms(250); /* socket clearing */ for(i = 0; i <= max_tunnel_idx; i++) { int loop; for(loop = 2; loop; loop--) { if(clientfd[i] != CURL_SOCKET_BAD) { if(!poll_client_wr[i] && !poll_client_rd[i]) { logmsg("[%s] CLOSING client socket", data_or_ctrl(i)); sclose(clientfd[i]); Loading @@ -1572,16 +1604,6 @@ static void http_connect(curl_socket_t *infdp, } } if(serverfd[i] != CURL_SOCKET_BAD) { if(poll_server_rd[i] && !poll_client_wr[i]) { logmsg("[%s] DISABLED READING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_RD); poll_server_rd[i] = FALSE; } if(poll_server_wr[i] && !poll_client_rd[i] && !tos[i]) { logmsg("[%s] DISABLED WRITING server", data_or_ctrl(i)); shutdown(serverfd[i], SHUT_WR); poll_server_wr[i] = FALSE; } if(!poll_server_wr[i] && !poll_server_rd[i]) { logmsg("[%s] CLOSING server socket", data_or_ctrl(i)); sclose(serverfd[i]); Loading