X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=comstack%2Ftcpip.c;h=9347e041659e412ac442d23fc9b9f64d8245f751;hp=9feb4558f7560d4a27847787eef8e35162fbfc39;hb=38d5a1c71a407c5e60c1bc650ed4edeae88a2efa;hpb=53fc6ff5ab7aaf73cdf33a77ca11b2fbabf185d6 diff --git a/comstack/tcpip.c b/comstack/tcpip.c index 9feb455..9347e04 100644 --- a/comstack/tcpip.c +++ b/comstack/tcpip.c @@ -3,7 +3,14 @@ * See the file LICENSE for details. * * $Log: tcpip.c,v $ - * Revision 1.39 2001-07-19 19:49:40 adam + * Revision 1.41 2001-10-12 21:49:26 adam + * For accept/recv/send check for EAGAIN if it's differs from EWOULDBLOCK. + * + * Revision 1.40 2001/08/23 09:02:46 adam + * WIN32 fixes: Socket not re-used for bind. yaz_log logs WIN32 error + * message. + * + * Revision 1.39 2001/07/19 19:49:40 adam * Fixed bug in tcpip_set_blocking. * * Revision 1.38 2001/03/21 12:43:36 adam @@ -603,13 +610,15 @@ int tcpip_bind(COMSTACK h, void *address, int mode) #else TRC (fprintf (stderr, "tcpip_bind\n")); #endif +#ifndef WIN32 if (setsockopt(h->iofile, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one)) < 0) { h->cerrno = CSYSERR; return -1; } - if (bind(h->iofile, addr, sizeof(struct sockaddr_in)) < 0) +#endif + if (bind(h->iofile, addr, sizeof(struct sockaddr_in))) { h->cerrno = CSYSERR; return -1; @@ -647,7 +656,12 @@ int tcpip_listen(COMSTACK h, char *raddr, int *addrlen, #ifdef WIN32 WSAGetLastError() == WSAEWOULDBLOCK #else - errno == EWOULDBLOCK + errno == EWOULDBLOCK +#ifdef EAGAIN +#if EAGAIN != EWOULDBLOCK + || errno == EAGAIN +#endif +#endif #endif ) h->cerrno = CSNODATA; @@ -847,10 +861,13 @@ int tcpip_get(COMSTACK h, char **buf, int *bufsize) else return -1; #else - if (errno == EWOULDBLOCK -#ifdef EINPROGRESS - || errno == EINPROGRESS + if (errno == EWOULDBLOCK +#ifdef EAGAIN +#if EAGAIN != EWOULDBLOCK + || errno == EAGAIN +#endif #endif + || errno == EINPROGRESS ) { h->io_pending = CS_WANT_READ; @@ -1010,7 +1027,12 @@ int tcpip_put(COMSTACK h, char *buf, int size) #ifdef WIN32 WSAGetLastError() == WSAEWOULDBLOCK #else - errno == EAGAIN + errno == EWOULDBLOCK +#ifdef EAGAIN +#if EAGAIN != EWOULDBLOCK + || errno == EAGAIN +#endif +#endif #endif ) {