Updated information about YAZ.
[yaz-moved-to-github.git] / comstack / tcpip.c
index 62a6a5e..639fd72 100644 (file)
@@ -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
 #include <errno.h>
 #include <fcntl.h>
 
-#include <comstack.h>
-#include <tcpip.h>
-#include <log.h>
+#include <yaz/comstack.h>
+#include <yaz/tcpip.h>
+#include <yaz/log.h>
 
 /* Chas added the following, so we get the definition of completeBER */
-#include <odr.h>
+#include <yaz/odr.h>
 
 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);