X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ftcpip.c;h=e350cdfa809c741749119c2bcaa421753b5889d1;hb=8d691989077a0addcbd840d769dce6700f3d9622;hp=af2d8132c2cecf6564434c863f9bf59f3c3800bd;hpb=11dbebdf973d652e486f2b5e457cc46d1478556f;p=yaz-moved-to-github.git diff --git a/src/tcpip.c b/src/tcpip.c index af2d813..e350cdf 100644 --- a/src/tcpip.c +++ b/src/tcpip.c @@ -1,8 +1,8 @@ /* - * Copyright (C) 1995-2006, Index Data ApS + * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: tcpip.c,v 1.28 2006-09-06 15:01:53 adam Exp $ + * $Id: tcpip.c,v 1.33 2007-01-03 08:42:15 adam Exp $ */ /** * \file tcpip.c @@ -26,10 +26,17 @@ #endif #ifdef WIN32 + +/* VS 2003 or later has getaddrinfo; older versions do not */ #include +#if _MSC_VER >= 1300 #include #define HAVE_GETADDRINFO 1 #else +#define HAVE_GETADDRINFO 0 +#endif + +#else #include #include #include @@ -322,10 +329,15 @@ void *tcpip_straddr(COMSTACK h, const char *str) sp->ai = tcpip_getaddrinfo(str, port); if (sp->ai && h->state == CS_ST_UNBND) { - int s; + int s = -1; struct addrinfo *ai = sp->ai; - s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (s < 0) + for (; ai; ai = ai->ai_next) + { + s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (s != -1) + break; + } + if (s == -1) return 0; h->iofile = s; @@ -354,7 +366,7 @@ void *tcpip_straddr(COMSTACK h, const char *str) return 0; h->iofile = s; - if (!tcpip_set_blocking(h, h->blocking)) + if (!tcpip_set_blocking(h, h->flags)) return 0; } return &sp->addr; @@ -560,7 +572,7 @@ static int tcpip_bind(COMSTACK h, void *address, int mode) #ifdef WIN32 BOOL one = 1; #else - unsigned long one = 1; + int one = 1; #endif #if HAVE_GETADDRINFO