Fix for linger behavior
authorBrian Aker <brian@gaz>
Tue, 15 Sep 2009 21:09:32 +0000 (14:09 -0700)
committerBrian Aker <brian@gaz>
Tue, 15 Sep 2009 21:09:32 +0000 (14:09 -0700)
ChangeLog
libmemcached/memcached_behavior.c
libmemcached/memcached_connect.c

index 45cb774f61ccbea85d5771195c29789f609b8052..581c0ab9fd84855efef25b3f35dba001d8e15f3a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+  * Change of behavior where linger is only modified for no-block and then
+    it is set to zero.
   * Added Twitter's memcached_server_error() functions.
   * Fix for OSX compiles in development builds.
   * Updated C++ interface.
index 5241c3c8f7eb700c0206fb8388682afc7601bddb..dd9884892ca89ef8d0bf822015e8ae365053e823 100644 (file)
@@ -225,17 +225,11 @@ uint64_t memcached_behavior_get(memcached_st *ptr,
     temp_flag= MEM_USE_SORT_HOSTS;
     break;
   case MEMCACHED_BEHAVIOR_POLL_TIMEOUT:
-    {
-      return (uint64_t)ptr->poll_timeout;
-    }
+    return (uint64_t)ptr->poll_timeout;
   case MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT:
-    {
-      return (uint64_t)ptr->connect_timeout;
-    }
+    return (uint64_t)ptr->connect_timeout;
   case MEMCACHED_BEHAVIOR_RETRY_TIMEOUT:
-    {
-      return (uint64_t)ptr->retry_timeout;
-    }
+    return (uint64_t)ptr->retry_timeout;
   case MEMCACHED_BEHAVIOR_SND_TIMEOUT:
     return (uint64_t)ptr->snd_timeout;
   case MEMCACHED_BEHAVIOR_RCV_TIMEOUT:
index 93738f4aa3d9173b3fc59d9e53b958b0b4ea31c6..833ad0efba97f9b9eb126d7f177ab1bb4147aff9 100644 (file)
@@ -81,12 +81,13 @@ static memcached_return set_socket_options(memcached_server_st *ptr)
   }
 #endif
 
+  if (ptr->root->flags & MEM_NO_BLOCK)
   {
     int error;
     struct linger linger;
 
     linger.l_onoff= 1; 
-    linger.l_linger= MEMCACHED_DEFAULT_TIMEOUT; 
+    linger.l_linger= 0; /* By default on close() just drop the socket */ 
     error= setsockopt(ptr->fd, SOL_SOCKET, SO_LINGER, 
                       &linger, (socklen_t)sizeof(struct linger));
     WATCHPOINT_ASSERT(error == 0);