]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/distribute-cache.c
The 8bim profile will be updated when the iptc profile is changed.
[imagemagick] / MagickCore / distribute-cache.c
index 7ce6cc5bbb92c13aeb6b86d84203f2b892e07825..36a0ac44454da74327cb7b265b2ab43964a462ab 100644 (file)
 %                 MagickCore Distributed Pixel Cache Methods                  %
 %                                                                             %
 %                              Software Design                                %
-%                                John Cristy                                  %
+%                                   Cristy                                    %
 %                                January 2013                                 %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -73,7 +73,7 @@
 #include "MagickCore/string-private.h"
 #include "MagickCore/version.h"
 #include "MagickCore/version-private.h"
-#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_HAVE_PTHREAD)
+#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_THREAD_SUPPORT)
 #include <netinet/in.h>
 #include <netdb.h>
 #include <sys/socket.h>
@@ -136,6 +136,11 @@ static inline MagickOffsetType dpc_read(int file,const MagickSizeType length,
   ssize_t
     count;
 
+#if !defined(MAGICKCORE_HAVE_SOCKET) || !defined(MAGICKCORE_THREAD_SUPPORT)
+  magick_unreferenced(file);
+  magick_unreferenced(message);
+#endif
+
   count=0;
   for (i=0; i < (MagickOffsetType) length; i+=count)
   {
@@ -154,7 +159,7 @@ static inline MagickOffsetType dpc_read(int file,const MagickSizeType length,
 static int ConnectPixelCacheServer(const char *hostname,const int port,
   size_t *session_key,ExceptionInfo *exception)
 {
-#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_HAVE_PTHREAD)
+#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_THREAD_SUPPORT)
   char
     service[MaxTextExtent];
 
@@ -202,6 +207,7 @@ static int ConnectPixelCacheServer(const char *hostname,const int port,
     result->ai_protocol);
   if (client_socket == -1)
     {
+      (void) close(client_socket);
       (void) ThrowMagickException(exception,GetMagickModule(),CacheError,
         "DistributedPixelCache","'%s'",hostname);
       return(-1);
@@ -256,8 +262,7 @@ static char *GetHostname(int *port,ExceptionInfo *exception)
   /*
     Parse host list (e.g. 192.168.100.1:6668,192.168.100.2:6668).
   */
-  hosts=(char *) GetImageRegistry(StringRegistryType,"cache:hosts",
-    exception);
+  hosts=(char *) GetImageRegistry(StringRegistryType,"cache:hosts",exception);
   if (hosts == (char *) NULL)
     {
       *port=DPCPort;
@@ -323,6 +328,7 @@ MagickPrivate DistributeCacheInfo *AcquireDistributeCacheInfo(
   hostname=DestroyString(hostname);
   if (server_info->file == -1)
     server_info=DestroyDistributeCacheInfo(server_info);
+  server_info->debug=IsEventLogging();
   return(server_info);
 }
 \f
@@ -389,11 +395,12 @@ MagickPrivate DistributeCacheInfo *DestroyDistributeCacheInfo(
 */
 
 static MagickBooleanType DestroyDistributeCache(SplayTreeInfo *registry,
-  int file,const size_t session_key)
+  int magick_unused(file),const size_t session_key)
 {
   /*
     Destroy distributed pixel cache.
   */
+  magick_unreferenced(file);
   return(DeleteNodeFromSplayTree(registry,(const void *) session_key));
 }
 
@@ -406,6 +413,11 @@ static inline MagickOffsetType dpc_send(int file,const MagickSizeType length,
   register MagickOffsetType
     i;
 
+#if !defined(MAGICKCORE_HAVE_SOCKET) || !defined(MAGICKCORE_THREAD_SUPPORT)
+  magick_unreferenced(file);
+  magick_unreferenced(message);
+#endif
+
   /*
     Ensure a complete message is sent.
   */
@@ -424,8 +436,8 @@ static inline MagickOffsetType dpc_send(int file,const MagickSizeType length,
   return(i);
 }
 
-static MagickBooleanType OpenDistributeCache(SplayTreeInfo *registry,
-  int file,const size_t session_key,ExceptionInfo *exception)
+static MagickBooleanType OpenDistributeCache(SplayTreeInfo *registry,int file,
+  const size_t session_key,ExceptionInfo *exception)
 {
   Image
     *image;
@@ -848,7 +860,7 @@ static void *DistributePixelCacheClient(void *socket)
 MagickExport void DistributePixelCacheServer(const int port,
   ExceptionInfo *exception)
 {
-#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_HAVE_PTHREAD)
+#if defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_THREAD_SUPPORT)
   char
     service[MaxTextExtent];
 
@@ -875,6 +887,8 @@ MagickExport void DistributePixelCacheServer(const int port,
   /*
     Launch distributed pixel cache server.
   */
+  assert(exception != (ExceptionInfo *) NULL);
+  assert(exception->signature == MagickSignature);
   (void) ResetMagickMemory(&hint,0,sizeof(hint));
   hint.ai_family=AF_INET;
   hint.ai_socktype=SOCK_STREAM;
@@ -896,11 +910,14 @@ MagickExport void DistributePixelCacheServer(const int port,
     status=setsockopt(server_socket,SOL_SOCKET,SO_REUSEADDR,&one,(socklen_t)
       sizeof(one));
     if (status == -1)
-      continue;
+      {
+        (void) close(server_socket);
+        continue;
+      }
     status=bind(server_socket,p->ai_addr,p->ai_addrlen);
     if (status == -1)
       {
-        (void) close(status);
+        (void) close(server_socket);
         continue;
       }
     break;