]> granicus.if.org Git - transmission/commitdiff
(libT RPC server): poll more frequently for new commands after we've received the...
authorCharles Kerr <charles@transmissionbt.com>
Thu, 5 Jun 2008 02:07:17 +0000 (02:07 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Thu, 5 Jun 2008 02:07:17 +0000 (02:07 +0000)
libtransmission/rpc-server.c
libtransmission/rpc-server.h

index 35be5db146362f0d2dd0fd0e7ba6e99da1e2e51c..7e69420aee28d442833f1163e09f89df1245c590 100644 (file)
 #define MY_NAME "RPC Server"
 
 #define BUSY_INTERVAL_MSEC 30
-#define IDLE_INTERVAL_MSEC 1000
+#define IDLE_INTERVAL_MSEC 100
+#define UNUSED_INTERVAL_MSEC 1000
 
 struct tr_rpc_server
 {
     int port;
+    time_t lastRequestTime;
     struct shttpd_ctx * ctx;
     tr_handle * session;
     struct evbuffer * in;
@@ -96,16 +98,21 @@ rpcPulse( int socket UNUSED, short action UNUSED, void * vserver )
     int interval;
     struct timeval tv;
     tr_rpc_server * server = vserver;
+    const time_t now = time( NULL );
 
     assert( server );
 
     shttpd_poll( server->ctx, 1 );
 
     /* set a timer for the next pulse */
-    if( EVBUFFER_LENGTH( server->in ) || EVBUFFER_LENGTH( server->out ) )
+    if( EVBUFFER_LENGTH( server->in ) || EVBUFFER_LENGTH( server->out ) ) {
         interval = BUSY_INTERVAL_MSEC;
-    else
+        server->lastRequestTime = now;
+    } else if( now - server->lastRequestTime < 300 ) {
         interval = IDLE_INTERVAL_MSEC;
+    } else {
+        interval = UNUSED_INTERVAL_MSEC;
+    }
     tv = tr_timevalMsec( interval );
     evtimer_add( &server->timer, &tv );
 }
@@ -116,7 +123,7 @@ startServer( tr_rpc_server * server )
     if( !server->ctx )
     {
         char ports[128];
-        struct timeval tv = tr_timevalMsec( IDLE_INTERVAL_MSEC );
+        struct timeval tv = tr_timevalMsec( UNUSED_INTERVAL_MSEC );
 
         server->ctx = shttpd_init( );
         snprintf( ports, sizeof( ports ), "%d", server->port );
index f86d53382c21052f016738101c9deed7888efa26..12a16ec9d7b7f34272b4ffd8d59961d9a6ea60c2 100644 (file)
@@ -36,6 +36,10 @@ int         tr_rpcSetTest   ( const tr_rpc_server    * server,
                               const char             * acl,
                               char                  ** allocme_errmsg );
 
+int         tr_rpcTestACL   ( const tr_rpc_server    * server,
+                              const char             * acl,
+                              char                  ** allocme_errmsg );
+
 int         tr_rpcSetACL    ( tr_rpc_server          * server,
                               const char             * acl,
                               char                  ** allocme_errmsg );