Update util and fix a few cppcheck warnings.
authorBrian Aker <brian@tangent.org>
Sat, 30 Jun 2012 16:30:23 +0000 (09:30 -0700)
committerBrian Aker <brian@tangent.org>
Sat, 30 Jun 2012 16:30:23 +0000 (09:30 -0700)
tests/libmemcached-1.0/haldenbrand.cc
tests/libmemcached-1.0/mem_functions.cc
tests/libmemcached-1.0/pool.cc
util/instance.cc
util/logfile.cc
util/pidfile.cc
util/signal.cc
util/signal.hpp

index cbbe88dd125ec306ff2246467a650a41f60eea22..a48b346a4a9e5f948942f19a016f2c623e4ed09a 100644 (file)
@@ -92,13 +92,13 @@ test_return_t haldenbrand_TEST2(memcached_st *memc)
   test_compare(MEMCACHED_SUCCESS, 
                memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, true));
 
-#ifdef NOT_YET
+#if 0
   test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE, 20 * 1024576));
   test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE, 20 * 1024576));
   getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE);
   getter = memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE);
 
-  for (x= 0, errors= 0; total < 20 * 1024576 ; x++)
+  for (x= 0, errors= 0; total < 20 * 1024576 ; x++);
 #endif
 
   size_t total_value_length= 0;
index bfacffea4a99090c83a69d96a82a600c77acb32a..9750d44d2062f4ac2371fb1d1e60863e2845d4bb 100644 (file)
@@ -3109,11 +3109,9 @@ test_return_t enable_consistent_hsieh(memcached_st *memc)
 
 test_return_t enable_cas(memcached_st *memc)
 {
-  unsigned int set= 1;
-
   if (libmemcached_util_version_check(memc, 1, 2, 4))
   {
-    memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
+    memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, true);
 
     return TEST_SUCCESS;
   }
index ea6501e8c2cc54316e719fe798d79d10c6a513f9..6156ecad89acbdd2db7fa726b8bec9dfb3934a50 100644 (file)
@@ -495,6 +495,8 @@ test_return_t regression_bug_962815(memcached_st *memc)
     {
       Error << "poll() failed with:" << strerror(errno);
     }
+    test_zero(active_fd);
+
     set_running(false);
   }
 
index e96f414f72e6280ba899414496b81ce376c3c5ac..8b9f5ee94afa5da24dd60f8600868a21c131836a 100644 (file)
@@ -211,7 +211,6 @@ bool Instance::run()
     case READING:
       if (operation->has_response())
       {
-        size_t total_read;
         ssize_t read_length;
 
         do
@@ -240,7 +239,6 @@ bool Instance::run()
           }
 
           operation->push(buffer, static_cast<size_t>(read_length));
-          total_read+= static_cast<size_t>(read_length);
 
         } while (more_to_read());
       } // end has_response
index c63077c1c20418f8c5d4bae00e6df41eb33f0b88..29023b6f0b7aa53dd2bcd165149d0577beb445e4 100644 (file)
@@ -49,6 +49,7 @@
 #include <sstream>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <unistd.h>
 
 namespace datadifferential {
 namespace util {
index 11f7f398d7962d3cb02495f3a743fae3a552e094..c6c5b4401b64698c0b24e0269811b343cffff23c 100644 (file)
@@ -118,8 +118,13 @@ bool Pidfile::create()
     }
   }
 
+  int oflags= O_CREAT|O_WRONLY|O_TRUNC;
+#ifdef HAVE_O_CLOEXEC
+  oflags= oflags | O_CLOEXEC;
+#endif
+
   int file;
-  if ((file = open(_filename.c_str(), O_CREAT|O_WRONLY|O_TRUNC, S_IRWXU|S_IRGRP|S_IROTH)) < 0)
+  if ((file = open(_filename.c_str(), oflags, S_IRWXU|S_IRGRP|S_IROTH)) < 0)
   {
     std::stringstream error_stream;
     error_stream << "Could not open pid file for writing: " << _filename << "(" << strerror(errno) << ")";
index c28a4bc44dee04ec4941fc7cabad1008cf545526..6eda56452c753e075976bd20243670489a7a4f22 100644 (file)
@@ -101,6 +101,19 @@ void SignalThread::test()
   assert(sigismember(&set, SIGUSR2));
 }
 
+void SignalThread::sighup(signal_callback_fn* arg)
+{
+  _sighup= arg;
+}
+
+void SignalThread::sighup()
+{
+  if (_sighup)
+  {
+    _sighup();
+  }
+}
+
 SignalThread::~SignalThread()
 {
   if (not is_shutdown())
@@ -142,6 +155,10 @@ static void *sig_thread(void *arg)
     case SIGUSR2:
       break;
 
+    case SIGHUP:
+      context->sighup();
+      break;
+
     case SIGABRT:
     case SIGINT:
     case SIGQUIT:
@@ -172,7 +189,9 @@ static void *sig_thread(void *arg)
 SignalThread::SignalThread(bool exit_on_signal_arg) :
   _exit_on_signal(exit_on_signal_arg),
   magic_memory(MAGIC_MEMORY),
-  thread(pthread_self())
+  __shutdown(SHUTDOWN_RUNNING),
+  thread(pthread_self()),
+  _sighup(NULL)
 {
   pthread_mutex_init(&shutdown_mutex, NULL);
   sigemptyset(&set);
index e082d7d23613a39c141e6efd8cba463aada0dbda..fab67be63ce8f84c1cd7165ede04172987e71f49 100644 (file)
 #include <signal.h>
 #endif
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void (signal_callback_fn)();
+
+#ifdef __cplusplus
+}
+#endif
+
 namespace datadifferential {
 namespace util {
 
@@ -59,7 +69,6 @@ class SignalThread {
   uint64_t magic_memory;
   volatile shutdown_t __shutdown;
   pthread_mutex_t shutdown_mutex;
-  pthread_t thread;
 
 public:
 
@@ -84,6 +93,13 @@ public:
   void set_shutdown(shutdown_t arg);
   bool is_shutdown();
   shutdown_t get_shutdown();
+
+  void sighup();
+  void sighup(signal_callback_fn* arg);
+
+private:
+  pthread_t thread;
+  signal_callback_fn* _sighup;
 };
 
 } /* namespace util */