* See the file LICENSE for details.
*
* $Log: tcpip.c,v $
- * Revision 1.38 2001-03-21 12:43:36 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
* Implemented cs_create_host. Better error reporting for SSL comstack.
*
* Revision 1.37 2001/03/08 20:18:55 adam
#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;
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
- errno == EWOULDBLOCK
+ errno == EWOULDBLOCK
+#ifdef EAGAIN
+#if EAGAIN != EWOULDBLOCK
+ || errno == EAGAIN
+#endif
+#endif
#endif
)
h->cerrno = CSNODATA;
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;
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
- errno == EAGAIN
+ errno == EWOULDBLOCK
+#ifdef EAGAIN
+#if EAGAIN != EWOULDBLOCK
+ || errno == EAGAIN
+#endif
+#endif
#endif
)
{
if (p->blocking == blocking)
return 1;
- if(blocking)
#ifdef WIN32
- flag = blocking;
+ flag = 1;
if (ioctlsocket(p->iofile, FIONBIO, &flag) < 0)
return 0;
#else