diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2009-04-03 07:10:52 +0200 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2009-04-03 07:10:52 +0200 |
commit | f77d4b9df5ced447b3ac3df2e02fc59d726d1560 (patch) | |
tree | 3f43269226cfd99f7930348ea1209d137cb45a3b /tests/network | |
parent | 06096f9f9385cd3155a2c957e8ff0bf2da59ac56 (diff) | |
download | wolfbones-f77d4b9df5ced447b3ac3df2e02fc59d726d1560.tar.gz wolfbones-f77d4b9df5ced447b3ac3df2e02fc59d726d1560.tar.bz2 |
no fileno
Diffstat (limited to 'tests/network')
-rw-r--r-- | tests/network/test1.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/tests/network/test1.c b/tests/network/test1.c index 5c304fe..e37f4cb 100644 --- a/tests/network/test1.c +++ b/tests/network/test1.c @@ -17,6 +17,8 @@ static void wolf_network_sock_nonblocking( int fd ) { flags = fcntl( fd, F_SETFL, flags ); } +#define MAX_IDLE_TIMEOUT 10 + #define max(a,b) ((a) < (b) ? (b) : (a)) int main( int argc, char *argv[] ) { @@ -70,9 +72,10 @@ int main( int argc, char *argv[] ) { goto FAIL; } - wolf_network_sock_nonblocking( fileno( stdin ) ); - wolf_network_sock_nonblocking( fileno( stdout ) ); + wolf_network_sock_nonblocking( STDIN_FILENO ); + wolf_network_sock_nonblocking( STDOUT_FILENO ); wolf_network_sock_nonblocking( fd ); + idle_secs = 0; do { @@ -90,9 +93,17 @@ int main( int argc, char *argv[] ) { /* set up select mask and compute highest file descriptor number */ max_fd = 0; - max_fd = max( max_fd, fileno( stdin ) ); - max_fd = max( max_fd, fileno( stdout ) ); + max_fd = max( max_fd, STDIN_FILENO ); + max_fd = max( max_fd, STDOUT_FILENO ); max_fd = max( max_fd, fd ); + + FD_SET( STDIN_FILENO, &read_set ); + FD_SET( fd, &read_set ); + FD_SET( STDOUT_FILENO, &write_set ); + FD_SET( fd, &write_set ); + FD_SET( STDIN_FILENO, &error_set ); + FD_SET( STDOUT_FILENO, &error_set ); + FD_SET( fd, &error_set ); res = select( max_fd + 1, &read_set, &write_set, &error_set, &timeout ); if( res < 0 ) { @@ -108,13 +119,22 @@ int main( int argc, char *argv[] ) { } else if( res == 0 ) { /* timeout */ idle_secs++; - fprintf( stderr, "Idle since %d seconds\n", idle_secs ); + if( idle_secs > MAX_IDLE_TIMEOUT ) { + fprintf( stderr, "Idle connection after %d seconds..terminating\n", + idle_secs ); + goto END; + } } else { /* something happened */ idle_secs = 0; + + if( FD_ISSET( STDOUT_FILENO, &write_set ) ) { +// res = write( STDOUT_FILENO, write_buf + } } } while( true ); +END: res = close( fd ); if( res < 0 ) { fprintf( stderr, "close failed: %s (%d)\n", strerror( errno ), errno ); |