projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MARC XML
[yaz-moved-to-github.git]
/
comstack
/
tcpip.c
diff --git
a/comstack/tcpip.c
b/comstack/tcpip.c
index
311b6e2
..
4abb057
100644
(file)
--- a/
comstack/tcpip.c
+++ b/
comstack/tcpip.c
@@
-2,7
+2,7
@@
* Copyright (c) 1995-2002, Index Data
* See the file LICENSE for details.
*
* Copyright (c) 1995-2002, Index Data
* See the file LICENSE for details.
*
- * $Id: tcpip.c,v 1.45 2002-01-21 21:50:32 adam Exp $
+ * $Id: tcpip.c,v 1.50 2002-09-25 12:37:07 adam Exp $
*/
#include <stdio.h>
*/
#include <stdio.h>
@@
-13,6
+13,7
@@
#endif
#include <errno.h>
#include <fcntl.h>
#endif
#include <errno.h>
#include <fcntl.h>
+#include <signal.h>
#if HAVE_OPENSSL_SSL_H
#include <openssl/ssl.h>
#include <openssl/err.h>
#if HAVE_OPENSSL_SSL_H
#include <openssl/ssl.h>
#include <openssl/err.h>
@@
-52,6
+53,10
@@
void *tcpip_straddr(COMSTACK h, const char *str);
#define TRC(X)
#endif
#define TRC(X)
#endif
+#ifndef YAZ_SOCKLEN_T
+#define YAZ_SOCKLEN_T int
+#endif
+
/* this state is used for both SSL and straight TCP/IP */
typedef struct tcpip_state
{
/* this state is used for both SSL and straight TCP/IP */
typedef struct tcpip_state
{
@@
-125,10
+130,17
@@
COMSTACK tcpip_type(int s, int blocking, int protocol, void *vp)
#ifdef WIN32
if (!(p->blocking = blocking) && ioctlsocket(s, FIONBIO, &tru) < 0)
#ifdef WIN32
if (!(p->blocking = blocking) && ioctlsocket(s, FIONBIO, &tru) < 0)
+ return 0;
#else
#else
- if (!(p->blocking = blocking) && fcntl(s, F_SETFL, O_NONBLOCK) < 0)
+ if (!(p->blocking = blocking))
+ {
+ if (fcntl(s, F_SETFL, O_NONBLOCK) < 0)
+ return 0;
+#ifndef MSG_NOSIGNAL
+ signal (SIGPIPE, SIG_IGN);
+#endif
+ }
#endif
#endif
- return 0;
p->io_pending = 0;
p->iofile = s;
p->io_pending = 0;
p->iofile = s;
@@
-298,7
+310,7
@@
int tcpip_connect(COMSTACK h, void *address)
return 1;
}
#else
return 1;
}
#else
- if (errno == EINPROGRESS)
+ if (yaz_errno() == EINPROGRESS)
{
h->event = CS_CONNECT;
h->state = CS_ST_CONNECTING;
{
h->event = CS_CONNECT;
h->state = CS_ST_CONNECTING;
@@
-441,11
+453,7
@@
int tcpip_listen(COMSTACK h, char *raddr, int *addrlen,
void *cd)
{
struct sockaddr_in addr;
void *cd)
{
struct sockaddr_in addr;
-#ifdef __cplusplus
- socklen_t len = sizeof(addr);
-#else
- int len = sizeof(addr);
-#endif
+ YAZ_SOCKLEN_T len = sizeof(addr);
TRC(fprintf(stderr, "tcpip_listen pid=%d\n", getpid()));
if (h->state != CS_ST_IDLE)
TRC(fprintf(stderr, "tcpip_listen pid=%d\n", getpid()));
if (h->state != CS_ST_IDLE)
@@
-460,10
+468,10
@@
int tcpip_listen(COMSTACK h, char *raddr, int *addrlen,
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
- errno == EWOULDBLOCK
+ yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
#endif
#endif
#endif
#endif
#endif
#endif
@@
-664,19
+672,22
@@
int tcpip_get(COMSTACK h, char **buf, int *bufsize)
else
return -1;
#else
else
return -1;
#else
- if (errno == EWOULDBLOCK
+ if (yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
+#endif
#endif
#endif
+ || yaz_errno() == EINPROGRESS
+#ifdef __sun__
+ || yaz_errno() == ENOENT /* Sun's sometimes set errno to this */
#endif
#endif
- || errno == EINPROGRESS
)
{
h->io_pending = CS_WANT_READ;
break;
}
)
{
h->io_pending = CS_WANT_READ;
break;
}
- else if (errno == 0)
+ else if (yaz_errno() == 0)
continue;
else
return -1;
continue;
else
return -1;
@@
-836,10
+847,10
@@
int tcpip_put(COMSTACK h, char *buf, int size)
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
#ifdef WIN32
WSAGetLastError() == WSAEWOULDBLOCK
#else
- errno == EWOULDBLOCK
+ yaz_errno() == EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
#ifdef EAGAIN
#if EAGAIN != EWOULDBLOCK
- || errno == EAGAIN
+ || yaz_errno() == EAGAIN
#endif
#endif
#endif
#endif
#endif
#endif
@@
-957,7
+968,7
@@
char *tcpip_addrstr(COMSTACK h)
struct sockaddr_in addr;
tcpip_state *sp = (struct tcpip_state *)h->cprivate;
char *r, *buf = sp->buf;
struct sockaddr_in addr;
tcpip_state *sp = (struct tcpip_state *)h->cprivate;
char *r, *buf = sp->buf;
- size_t len;
+ YAZ_SOCKLEN_T len;
struct hostent *host;
len = sizeof(addr);
struct hostent *host;
len = sizeof(addr);