X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fgetaddrinfo.c;h=f1525ea6775c20e7f3048d8036fc17c321ae8a11;hb=11994049975d40a0010d0dca01156bc80171b448;hp=b504ec735765a8c42eb3996e171ad7f8e215d112;hpb=2819110732a5e3cdc6de71333977ff39d7cf8bf3;p=pazpar2-moved-to-github.git diff --git a/src/getaddrinfo.c b/src/getaddrinfo.c index b504ec7..f1525ea 100644 --- a/src/getaddrinfo.c +++ b/src/getaddrinfo.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2009 Index Data + Copyright (C) 2006-2010 Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -51,6 +51,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "connection.h" #include "host.h" +/* Only use a threaded resolver on Unix that offers getaddrinfo. + gethostbyname is NOT reentrant. + */ +#if HAVE_GETADDRINFO +#ifndef WIN32 +#define USE_THREADED_RESOLVER 1 +#endif +#endif + struct work { char *hostport; /* hostport to be resolved in separate thread */ char *ipport; /* result or NULL if it could not be resolved */ @@ -140,7 +149,7 @@ static void work_handler(void *vp) perform_getaddrinfo(w); } -#ifndef WIN32 +#if USE_THREADED_RESOLVER void iochan_handler(struct iochan *i, int event) { sel_thread_t p = iochan_getdata(i); @@ -186,7 +195,7 @@ int host_getaddrinfo(struct host *host) w->hostport = host->hostport; w->ipport = 0; w->host = host; -#ifndef WIN32 +#if USE_THREADED_RESOLVER if (use_thread) { if (resolver_thread == 0) @@ -207,7 +216,9 @@ int host_getaddrinfo(struct host *host) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +