% 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 %
#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>
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)
{
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];
result->ai_protocol);
if (client_socket == -1)
{
+ (void) close(client_socket);
(void) ThrowMagickException(exception,GetMagickModule(),CacheError,
"DistributedPixelCache","'%s'",hostname);
return(-1);
/*
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;
hostname=DestroyString(hostname);
if (server_info->file == -1)
server_info=DestroyDistributeCacheInfo(server_info);
+ server_info->debug=IsEventLogging();
return(server_info);
}
\f
*/
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));
}
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.
*/
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;
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];
/*
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;
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;