X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=comstack%2Ftcpip.c;h=639fd72180df84dc54b9210aa7f2356999701b6b;hb=7650dadee1e1a910677c8d305aa70dbbf38e79e6;hp=62a6a5efe268847d9b6baf8856eaa8f77e4e8558;hpb=bf7ee634e855d15e955d06e7b225d2045abd518a;p=yaz-moved-to-github.git diff --git a/comstack/tcpip.c b/comstack/tcpip.c index 62a6a5e..639fd72 100644 --- a/comstack/tcpip.c +++ b/comstack/tcpip.c @@ -4,7 +4,18 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: tcpip.c,v $ - * Revision 1.29 1999-04-16 14:45:55 adam + * Revision 1.32 1999-11-30 13:47:11 adam + * Improved installation. Moved header files to include/yaz. + * + * Revision 1.31 1999/04/29 07:31:23 adam + * Changed tcpip_strtoaddr_ex so that only part 'till '/' is considered + * part of hostname. + * + * Revision 1.30 1999/04/20 09:56:48 adam + * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun). + * Modified all encoders/decoders to reflect this change. + * + * Revision 1.29 1999/04/16 14:45:55 adam * Added interface for tcpd wrapper for access control. * * Revision 1.28 1999/03/31 11:11:14 adam @@ -170,12 +181,12 @@ #include #include -#include -#include -#include +#include +#include +#include /* Chas added the following, so we get the definition of completeBER */ -#include +#include int tcpip_close(COMSTACK h); int tcpip_put(COMSTACK h, char *buf, int size); @@ -329,7 +340,10 @@ int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add) return 0; TRC(fprintf(stderr, "tcpip_strtoaddress: %s\n", str ? str : "NULL")); add->sin_family = AF_INET; - strcpy(buf, str); + strncpy(buf, str, 511); + buf[511] = 0; + if ((p = strchr(buf, '/'))) + *p = 0; if ((p = strchr(buf, ':'))) { *p = 0; @@ -416,7 +430,6 @@ int tcpip_bind(COMSTACK h, void *address, int mode) unsigned long one = 1; #endif - logf (LOG_LOG, "tcpip_bind"); TRC(fprintf(stderr, "tcpip_bind\n")); if (setsockopt(h->iofile, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one)) < 0) @@ -439,7 +452,7 @@ int tcpip_bind(COMSTACK h, void *address, int mode) } int tcpip_listen(COMSTACK h, char *raddr, int *addrlen, - int (*check_ip)(void *cd, const char *a, int len, int type), + int (*check_ip)(void *cd, const char *a, int len, int t), void *cd) { struct sockaddr_in addr; @@ -464,7 +477,7 @@ int tcpip_listen(COMSTACK h, char *raddr, int *addrlen, h->cerrno = CSYSERR; return -1; } - if (addrlen && *addrlen >= sizeof(struct sockaddr_in)) + if (addrlen && (size_t) (*addrlen) >= sizeof(struct sockaddr_in)) memcpy(raddr, &addr, *addrlen = sizeof(struct sockaddr_in)); else if (addrlen) *addrlen = 0; @@ -682,7 +695,7 @@ char *tcpip_addrstr(COMSTACK h) struct sockaddr_in addr; tcpip_state *sp = (struct tcpip_state *)h->cprivate; char *r, *buf = sp->buf; - int len; + size_t len; struct hostent *host; len = sizeof(addr);