* See the file LICENSE for details.
*
* $Log: tcpip.c,v $
- * Revision 1.37 2001-03-08 20:18:55 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
* Added cs_set_blocking. Patch from Matthew Carey.
*
* Revision 1.36 2001/02/21 13:46:53 adam
return 1;
}
#endif
+ h->cerrno = CSYSERR;
return -1;
}
h->state = CS_CONNECTING;
h->io_pending = CS_WANT_WRITE;
return 1;
}
+ h->cerrno = CSERRORSSL;
return -1;
}
}
#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;
}
if (res == 0)
return 0;
+ h->cerrno = CSERRORSSL;
return -1;
}
hasread += res;
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
- errno == EAGAIN
+ errno == EWOULDBLOCK
+#ifdef EAGAIN
+#if EAGAIN != EWOULDBLOCK
+ || errno == EAGAIN
+#endif
+#endif
#endif
)
{
yaz_log (LOG_LOG, "SSL_write. want_write");
return 1;
}
+ h->cerrno = CSERRORSSL;
return -1;
}
state->written += res;
if (p->blocking == blocking)
return 1;
- if(blocking)
#ifdef WIN32
- flag = blocking;
+ flag = 1;
if (ioctlsocket(p->iofile, FIONBIO, &flag) < 0)
return 0;
#else