X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=src%2Fgetaddrinfo.c;h=cce2532bdf4f770b8ac5e38354b56a7643151b2a;hb=e107b0011a295ccc61502d6e5ea79d9125a3fbb4;hp=c400e07d34109edbaa9dedc75c0f8f63cf70bd89;hpb=dbcf2c3410ed74d919efdc62ffbd00e716284d8e;p=pazpar2-moved-to-github.git diff --git a/src/getaddrinfo.c b/src/getaddrinfo.c index c400e07..cce2532 100644 --- a/src/getaddrinfo.c +++ b/src/getaddrinfo.c @@ -1,7 +1,5 @@ -/* $Id: getaddrinfo.c,v 1.5 2007-04-23 21:05:23 adam Exp $ - Copyright (c) 2006-2007, Index Data. - -This file is part of Pazpar2. +/* This file is part of Pazpar2. + Copyright (C) 2006-2008 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 @@ -14,10 +12,10 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with Pazpar2; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. - */ +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ #if HAVE_CONFIG_H #include "cconfig.h" @@ -54,14 +52,19 @@ void perform_getaddrinfo(struct work *w) { int res = 0; char *port; +#if HAVE_GETADDRINFO struct addrinfo *addrinfo, hints; +#else + struct hostent *hp; +#endif char *hostport = xstrdup(w->hostport); if ((port = strchr(hostport, ':'))) *(port++) = '\0'; else port = "210"; - + +#if HAVE_GETADDRINFO hints.ai_flags = 0; hints.ai_family = PF_INET; hints.ai_socktype = SOCK_STREAM; @@ -90,6 +93,24 @@ void perform_getaddrinfo(struct work *w) w->ipport = xstrdup(ipport); yaz_log(log_level, "Resolved %s -> %s", hostport, ipport); } +#else + hp = gethostbyname(hostport); + if (!hp) + { + yaz_log(YLOG_WARN|YLOG_ERRNO, "Failed to resolve %s", hostport); + } + else + { + char ipport[128]; + unsigned char addrbuf[4]; + + memcpy(addrbuf, *hp->h_addr_list, 4 * sizeof(unsigned char)); + sprintf(ipport, "%u.%u.%u.%u:%s", + addrbuf[0], addrbuf[1], addrbuf[2], addrbuf[3], port); + w->ipport = xstrdup(ipport); + yaz_log(log_level, "Resolved %s -> %s", hostport, ipport); + } +#endif xfree(hostport); }