Make udp_proxy more robust

There seemed to be some race conditions with server closing its fd right after
sending HelloVerifyRequest causing the proxy to exit after a failed read.
This commit is contained in:
Manuel Pégourié-Gonnard 2014-10-01 00:56:03 +02:00 committed by Paul Bakker
parent 6093d81c20
commit ce8588c9ef

View file

@ -545,6 +545,9 @@ accept:
/*
* 3. Forward packets forever (kill the process to terminate it)
*/
clear_pending();
memset( dropped, 0, sizeof( dropped ) );
nb_fds = client_fd;
if( nb_fds < server_fd )
nb_fds = server_fd;
@ -566,24 +569,20 @@ accept:
}
if( FD_ISSET( listen_fd, &read_fds ) )
{
clear_pending();
memset( dropped, 0, sizeof( dropped ) );
goto accept;
}
if( FD_ISSET( client_fd, &read_fds ) )
{
if( ( ret = handle_message( "S <- C",
server_fd, client_fd ) ) != 0 )
goto exit;
goto accept;
}
if( FD_ISSET( server_fd, &read_fds ) )
{
if( ( ret = handle_message( "S -> C",
client_fd, server_fd ) ) != 0 )
goto exit;
goto accept;
}
}