summaryrefslogtreecommitdiff
path: root/tests/network
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2009-04-03 07:10:52 +0200
committerAndreas Baumann <abaumann@yahoo.com>2009-04-03 07:10:52 +0200
commitf77d4b9df5ced447b3ac3df2e02fc59d726d1560 (patch)
tree3f43269226cfd99f7930348ea1209d137cb45a3b /tests/network
parent06096f9f9385cd3155a2c957e8ff0bf2da59ac56 (diff)
downloadwolfbones-f77d4b9df5ced447b3ac3df2e02fc59d726d1560.tar.gz
wolfbones-f77d4b9df5ced447b3ac3df2e02fc59d726d1560.tar.bz2
no fileno
Diffstat (limited to 'tests/network')
-rw-r--r--tests/network/test1.c30
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 );