X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ftcpip.c;h=ee80c6beb6edea4b1a678f6954195a7563c57b25;hb=2dbe1df5facb92bac31b5da0ca2e2e8ee6f9b358;hp=b1f9fa9f6ca944506491bb831a2c144e9b773ebb;hpb=29cc293e92725df0aaf70fa4897600597dd8db9b;p=yaz-moved-to-github.git diff --git a/src/tcpip.c b/src/tcpip.c index b1f9fa9..ee80c6b 100644 --- a/src/tcpip.c +++ b/src/tcpip.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: tcpip.c,v 1.35 2007-10-07 08:53:26 adam Exp $ + * $Id: tcpip.c,v 1.41 2008-01-21 13:34:34 adam Exp $ */ /** * \file tcpip.c @@ -46,9 +46,6 @@ #if HAVE_SYS_SOCKET_H #include #endif -#if HAVE_SYS_SELECT_H -#include -#endif #if HAVE_SYS_WAIT_H #include #endif @@ -104,7 +101,7 @@ typedef struct tcpip_state int written; /* -1 if we aren't writing */ int towrite; /* to verify against user input */ - int (*complete)(const unsigned char *buf, int len); /* length/comple. */ + int (*complete)(const char *buf, int len); /* length/complete. */ #if HAVE_GETADDRINFO struct addrinfo *ai; #else @@ -227,7 +224,7 @@ COMSTACK yaz_tcpip_create(int s, int flags, int protocol, if (connect_host) { tcpip_state *sp = (tcpip_state *) p->cprivate; - sp->connect_request_buf = xmalloc(strlen(connect_host) + 30); + sp->connect_request_buf = (char *) xmalloc(strlen(connect_host) + 30); sprintf(sp->connect_request_buf, "CONNECT %s HTTP/1.0\r\n\r\n", connect_host); sp->connect_request_len = strlen(sp->connect_request_buf); @@ -409,8 +406,7 @@ int tcpip_more(COMSTACK h) { tcpip_state *sp = (tcpip_state *)h->cprivate; - return sp->altlen && (*sp->complete)((unsigned char *) sp->altbuf, - sp->altlen); + return sp->altlen && (*sp->complete)(sp->altbuf, sp->altlen); } /* @@ -724,7 +720,15 @@ int tcpip_listen(COMSTACK h, char *raddr, int *addrlen, ) h->cerrno = CSNODATA; else + { +#ifdef WIN32 + shutdown(h->iofile, SD_RECEIVE); +#else + shutdown(h->iofile, SHUT_RD); +#endif + listen(h->iofile, SOMAXCONN); h->cerrno = CSYSERR; + } return -1; } if (addrlen && (size_t) (*addrlen) >= sizeof(struct sockaddr_in)) @@ -824,9 +828,9 @@ COMSTACK tcpip_accept(COMSTACK h) state->ssl = SSL_new (state->ctx); SSL_set_fd (state->ssl, cnew->iofile); } +#endif state->connect_request_buf = 0; state->connect_response_buf = 0; -#endif h = cnew; } if (h->state == CS_ST_ACCEPT) @@ -895,7 +899,7 @@ int tcpip_get(COMSTACK h, char **buf, int *bufsize) sp->altsize = tmpi; } h->io_pending = 0; - while (!(berlen = (*sp->complete)((unsigned char *)*buf, hasread))) + while (!(berlen = (*sp->complete)(*buf, hasread))) { if (!*bufsize) { @@ -1026,7 +1030,7 @@ int ssl_get(COMSTACK h, char **buf, int *bufsize) sp->altsize = tmpi; } h->io_pending = 0; - while (!(berlen = (*sp->complete)((unsigned char *)*buf, hasread))) + while (!(berlen = (*sp->complete)(*buf, hasread))) { if (!*bufsize) {