Merge Andre
authorBrian Aker <brian@gaz>
Mon, 5 Apr 2010 19:01:19 +0000 (12:01 -0700)
committerBrian Aker <brian@gaz>
Mon, 5 Apr 2010 19:01:19 +0000 (12:01 -0700)
1  2 
libmemcached/behavior.c
libmemcached/connect.c
libmemcached/constants.h
libmemcached/memcached.c
libmemcached/memcached.h
libmemcached/storage.c
tests/mem_functions.c

Simple merge
Simple merge
Simple merge
Simple merge
index 81120c5427c472eabd1c2b67fa0957438c138d80,1392cb2bc7efb75303f22895cd6bfc077e459872..2244c62dc2fa67c3911937d2f7d43046cc316fb5
@@@ -65,22 -64,23 +65,23 @@@ struct memcached_st 
    } state;
    struct {
      // Everything below here is pretty static.
 -    bool auto_eject_hosts MEMCACHED_BITFIELD;
 -    bool binary_protocol MEMCACHED_BITFIELD;
 -    bool buffer_requests MEMCACHED_BITFIELD;
 -    bool cork MEMCACHED_BITFIELD;
 -    bool hash_with_prefix_key MEMCACHED_BITFIELD;
 -    bool ketama_weighted MEMCACHED_BITFIELD;
 -    bool no_block MEMCACHED_BITFIELD;
 -    bool no_reply MEMCACHED_BITFIELD;
 -    bool randomize_replica_read MEMCACHED_BITFIELD;
 -    bool reuse_memory MEMCACHED_BITFIELD;
 -    bool support_cas MEMCACHED_BITFIELD;
 -    bool tcp_nodelay MEMCACHED_BITFIELD;
 -    bool use_cache_lookups MEMCACHED_BITFIELD;
 -    bool use_sort_hosts MEMCACHED_BITFIELD;
 -    bool use_udp MEMCACHED_BITFIELD;
 -    bool verify_key MEMCACHED_BITFIELD;
 -    bool tcp_keepalive MEMCACHED_BITFIELD;
 +    bool auto_eject_hosts:1;
 +    bool binary_protocol:1;
 +    bool buffer_requests:1;
 +    bool cork:1;
 +    bool hash_with_prefix_key:1;
 +    bool ketama_weighted:1;
 +    bool no_block:1;
 +    bool no_reply:1;
 +    bool randomize_replica_read:1;
 +    bool reuse_memory:1;
 +    bool support_cas:1;
 +    bool tcp_nodelay:1;
 +    bool use_cache_lookups:1;
 +    bool use_sort_hosts:1;
 +    bool use_udp:1;
 +    bool verify_key:1;
++    bool tcp_keepalive:1;
    } flags;
    memcached_server_distribution_t distribution;
    hashkit_st hashkit;
index 2b232fe75255b2aeb11d9967713f14bfe94e0021,ba66cf878799c3cd5eb7136ca6dbdb87df9a54ec..be0040a4197f6b621f0a900e662c92117ea8b89b
@@@ -145,48 -145,52 +145,47 @@@ static inline memcached_return_t memcac
    if (write_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
    {
      rc= MEMCACHED_WRITE_FAILURE;
--    goto error;
--  }
--
 -  /* Send command header */
 -  rc=  memcached_do(instance, buffer, write_length, false);
 -  if (rc != MEMCACHED_SUCCESS)
 -    goto error;
--
-   struct __write_vector_st vector[]= 
 -  /* Send command body */
 -  if (memcached_io_write(instance, value, value_length, false) == -1)
--  {
-     { .length= write_length, .buffer= buffer },
-     { .length= value_length, .buffer= value },
-     { .length= 2, .buffer= "\r\n" }
-   }; 
 -    rc= MEMCACHED_WRITE_FAILURE;
 -    goto error;
 -  }
--
--  if (ptr->flags.buffer_requests && verb == SET_OP)
--  {
--    to_write= false;
    }
    else
    {
--    to_write= true;
--  }
-   /* Send command header */
-   rc=  memcached_vdo(instance, vector, 3, to_write);
-   if (rc == MEMCACHED_SUCCESS)
-   {
-   if (ptr->flags.no_reply)
-     return (to_write == false) ? MEMCACHED_BUFFERED : MEMCACHED_SUCCESS;
-   if (to_write == false)
-     return MEMCACHED_BUFFERED;
-   rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
-   if (rc == MEMCACHED_STORED)
-     return MEMCACHED_SUCCESS;
-   else
-     return rc;
++    struct __write_vector_st vector[]= 
++    {
++      { .length= write_length, .buffer= buffer },
++      { .length= value_length, .buffer= value },
++      { .length= 2, .buffer= "\r\n" }
++    }; 
 -  if (memcached_io_write(instance, "\r\n", 2, to_write) == -1)
 -  {
 -    rc= MEMCACHED_WRITE_FAILURE;
 -    goto error;
 -  }
++    if (ptr->flags.buffer_requests && verb == SET_OP)
++    {
++      to_write= false;
++    }
++    else
++    {
++      to_write= true;
++    }
 -  if (ptr->flags.no_reply)
 -    return (to_write == false) ? MEMCACHED_BUFFERED : MEMCACHED_SUCCESS;
++    /* Send command header */
++    rc=  memcached_vdo(instance, vector, 3, to_write);
++    if (rc == MEMCACHED_SUCCESS)
++    {
 -  if (to_write == false)
 -    return MEMCACHED_BUFFERED;
++      if (ptr->flags.no_reply)
++        return (to_write == false) ? MEMCACHED_BUFFERED : MEMCACHED_SUCCESS;
 -  rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
++      if (to_write == false)
++        return MEMCACHED_BUFFERED;
 -  if (rc == MEMCACHED_STORED)
 -    return MEMCACHED_SUCCESS;
 -  else
 -    return rc;
++      rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
++
++      if (rc == MEMCACHED_STORED)
++        return MEMCACHED_SUCCESS;
++      else
++        return rc;
++    }
 +  }
  
--error:
-   memcached_io_reset(instance);
+   if (rc == MEMCACHED_WRITE_FAILURE)
+     memcached_io_reset(instance);
  
    return rc;
  }
index dca68b121ca891989ca285835aff5873f081e736,84ac0dc14abbd5677b22afde097b8871a13ce4d4..75d00932e074b4e60dae83d591d5f50309f862c5
@@@ -1939,6 -1933,6 +1939,54 @@@ static test_return_t MEMCACHED_BEHAVIOR
    return TEST_SUCCESS;
  }
  
++
++static test_return_t MEMCACHED_BEHAVIOR_TCP_KEEPALIVE_test(memcached_st *memc)
++{
++  memcached_return_t rc;
++  bool set= true;
++  bool value;
++
++  rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_KEEPALIVE, set);
++  test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_NOT_SUPPORTED);
++
++  value= (bool)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_KEEPALIVE);
++
++  if (rc == MEMCACHED_SUCCESS)
++  {
++    test_true((bool)value == set);
++  }
++  else
++  {
++    test_false((bool)value == set);
++  }
++
++  return TEST_SUCCESS;
++}
++
++
++static test_return_t MEMCACHED_BEHAVIOR_TCP_KEEPIDLE_test(memcached_st *memc)
++{
++  memcached_return_t rc;
++  bool set= true;
++  bool value;
++
++  rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_KEEPIDLE, set);
++  test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_NOT_SUPPORTED);
++
++  value= (bool)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_TCP_KEEPIDLE);
++
++  if (rc == MEMCACHED_SUCCESS)
++  {
++    test_true((bool)value == set);
++  }
++  else
++  {
++    test_false((bool)value == set);
++  }
++
++  return TEST_SUCCESS;
++}
++
  static test_return_t fetch_all_results(memcached_st *memc)
  {
    memcached_return_t rc= MEMCACHED_SUCCESS;
@@@ -5646,6 -5566,6 +5694,8 @@@ test_st tests[] =
  test_st behavior_tests[] ={
    {"behavior_test", 0, (test_callback_fn)behavior_test},
    {"MEMCACHED_BEHAVIOR_CORK", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_CORK_test},
++  {"MEMCACHED_BEHAVIOR_TCP_KEEPALIVE", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_TCP_KEEPALIVE_test},
++  {"MEMCACHED_BEHAVIOR_TCP_KEEPIDLE", 0, (test_callback_fn)MEMCACHED_BEHAVIOR_TCP_KEEPIDLE_test},
    {0, 0, 0}
  };