]> git.ipfire.org Git - thirdparty/opentracker.git/commitdiff
Some code spacifying. Added actually checking timeouts.
authorerdgeist <>
Mon, 8 Jan 2007 05:18:53 +0000 (05:18 +0000)
committererdgeist <>
Mon, 8 Jan 2007 05:18:53 +0000 (05:18 +0000)
opentracker.c

index 58704bb790c1859d1ab9412b206c663256dbb20a..5bccab9d810cb227fd1104b1e8a7c0e41f1974bc 100644 (file)
@@ -27,6 +27,7 @@
 #include "scan_urlencoded_query.h"
 
 unsigned long const OT_CLIENT_TIMEOUT = 15;
+unsigned long const OT_CLIENT_TIMEOUT_CHECKINTERVAL = 5;
 
 static unsigned int ot_overall_connections = 0;
 static time_t ot_start_time;
@@ -343,7 +344,7 @@ void help( char *name ) {
 
 int main( int argc, char **argv ) {
   int s=socket_tcp4();
-  tai6464 t;
+  tai6464 t, next_timeout_check;
   unsigned long ip;
   char *serverip = NULL;
   char *serverdir = ".";
@@ -384,17 +385,33 @@ allparsed:
   if( init_logic( serverdir ) == -1 )
     panic("Logic not started");
 
-  io_wantread(s);
+  io_wantread( s );
+  taia_now( &next_timeout_check );
+  taia_addsec( &next_timeout_check, &next_timeout_check, OT_CLIENT_TIMEOUT_CHECKINTERVAL );
 
   for (;;) {
     int64 i;
     io_wait();
 
-    while ((i=io_canread())!=-1) {
-      if (i==s) { // ist es der serversocket?
+    taia_now(&t);
+    if( taia_less( &next_timeout_check, &t ) ) {
+      while( ( i = io_timeouted() ) != -1 ) {
+        struct http_data* h=io_getcookie(i);
+        if( h ) {
+          array_reset( &h->r );
+          free( h );
+        }
+        io_close(i);
+      }
+      taia_now(&next_timeout_check);
+      taia_addsec(&next_timeout_check,&next_timeout_check,OT_CLIENT_TIMEOUT_CHECKINTERVAL);
+    }
+
+    while( ( i = io_canread() ) != -1 ) {
+      if( i == s ) { // ist es der serversocket?
         int n;
-        while ((n=socket_accept4(s,(void*)&ip,&port))!=-1) {
-          if (io_fd(n)) {
+        while( ( n = socket_accept4( s, (void*)&ip, &port) ) != -1 ) {
+          if( io_fd( n ) ) {
             struct http_data* h=(struct http_data*)malloc(sizeof(struct http_data));
             io_wantread(n);