]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 26 Jan 2013 00:11:04 +0000 (00:11 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 26 Jan 2013 00:11:04 +0000 (00:11 +0000)
MagickCore/distribute-cache.c

index 8676e6cd3f5e65a34768d697a582d0cc5487378e..0f094567b98908fbf06a529c55bd803afaf418ba 100644 (file)
@@ -167,12 +167,25 @@ static inline MagickSizeType MagickMin(const MagickSizeType x,
 static inline MagickOffsetType dpc_read(int file,const MagickSizeType length,
   unsigned char *restrict message)
 {
-  MagickOffsetType
+  register MagickOffsetType
+    i;
+
+  ssize_t
     count;
 
-  count=(MagickOffsetType) recv(file,message,(size_t) MagickMin(length,
-    (MagickSizeType) SSIZE_MAX),0);
-  return(count);
+  count=0;
+  for (i=0; i < (MagickOffsetType) length; i+=count)
+  {
+    count=recv(file,message+i,(size_t) MagickMin(length-i,(MagickSizeType)
+      SSIZE_MAX),0);
+    if (count <= 0)
+      {
+        count=0;
+        if (errno != EINTR)
+          break;
+      }
+  }
+  return(i);
 }
 
 static int ConnectPixelCacheServer(const char *hostname,const int port,
@@ -244,7 +257,7 @@ static int ConnectPixelCacheServer(const char *hostname,const int port,
         "DistributedPixelCache","'%s'",hostname);
       return(-1);
     }
-  count=dpc_read(client_socket,MaxTextExtent,secret);
+  count=recv(client_socket,secret,MaxTextExtent,0);
   if (count != -1)
     {
       MagickSizeType