From 3c92804cfa78e4e0575f5f96672dc398e7020409 Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 26 Jan 2013 00:11:04 +0000 Subject: [PATCH] --- MagickCore/distribute-cache.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/MagickCore/distribute-cache.c b/MagickCore/distribute-cache.c index 8676e6cd3..0f094567b 100644 --- a/MagickCore/distribute-cache.c +++ b/MagickCore/distribute-cache.c @@ -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 -- 2.40.0