New function cs_get_host_args for method/host/path parsing.
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Mar 2003 11:05:19 +0000 (11:05 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Mar 2003 11:05:19 +0000 (11:05 +0000)
comstack/comstack.c
comstack/tcpip.c
include/yaz/comstack.h

index a9d73bd..b621522 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1995-2003, Index Data
  * See the file LICENSE for details.
  *
- * $Id: comstack.c,v 1.12 2003-02-21 12:08:57 adam Exp $
+ * $Id: comstack.c,v 1.13 2003-03-11 11:05:19 adam Exp $
  */
 
 #include <string.h>
@@ -36,6 +36,24 @@ const char *cs_strerror(COMSTACK h)
     return cs_errmsg(h->cerrno);
 }
 
+void cs_get_host_args(const char *type_and_host, const char **args)
+{
+    
+    *args = "";
+    if (*type_and_host && strncmp(type_and_host, "unix:", 5))
+    {
+        const char *cp;
+        cp = strstr(type_and_host, "://");
+        if (cp)
+            cp = cp+3;
+        else
+            cp = type_and_host;
+        cp = strchr(cp, '/');
+        if (cp)
+            *args = cp+1;
+    }
+}
+
 COMSTACK cs_create_host(const char *type_and_host, int blocking, void **vp)
 {
     enum oid_proto proto = PROTO_Z3950;
index b1f4f73..5f24ef3 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1995-2003, Index Data
  * See the file LICENSE for details.
  *
- * $Id: tcpip.c,v 1.55 2003-02-21 12:08:57 adam Exp $
+ * $Id: tcpip.c,v 1.56 2003-03-11 11:05:19 adam Exp $
  */
 
 #include <stdio.h>
@@ -225,11 +225,12 @@ COMSTACK ssl_type(int s, int blocking, int protocol, void *vp)
 }
 #endif
 
-int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add)
+int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add,
+                       int default_port)
 {
     struct hostent *hp;
     char *p, buf[512];
-    short int port = 210;
+    short int port = default_port;
     unsigned tmpadd;
 
     if (!tcpip_init ())
@@ -261,8 +262,12 @@ int tcpip_strtoaddr_ex(const char *str, struct sockaddr_in *add)
 void *tcpip_straddr(COMSTACK h, const char *str)
 {
     tcpip_state *sp = (tcpip_state *)h->cprivate;
+    int port = 210;
 
-    if (!tcpip_strtoaddr_ex (str, &sp->addr))
+    if (h->protocol == PROTO_HTTP)
+        port = 80;
+
+    if (!tcpip_strtoaddr_ex (str, &sp->addr, port))
        return 0;
     return &sp->addr;
 }
@@ -271,7 +276,7 @@ struct sockaddr_in *tcpip_strtoaddr(const char *str)
 {
     static struct sockaddr_in add;
     
-    if (!tcpip_strtoaddr_ex (str, &add))
+    if (!tcpip_strtoaddr_ex (str, &add, 210))
        return 0;
     return &add;
 }
@@ -1053,10 +1058,18 @@ char *tcpip_addrstr(COMSTACK h)
        r = (char*) host->h_name;
     else
        r = inet_ntoa(addr.sin_addr);
-    sprintf(buf, "tcp:%s", r);
+    if (h->protocol == PROTO_HTTP)
+        sprintf(buf, "http:%s", r);
+    else
+        sprintf(buf, "tcp:%s", r);
 #if HAVE_OPENSSL_SSL_H
     if (sp->ctx)
-       sprintf(buf, "ssl:%s", r);
+    {
+        if (h->protocol == PROTO_HTTP)
+            sprintf(buf, "https:%s", r);
+        else
+            sprintf(buf, "ssl:%s", r);
+    }
 #endif
     return buf;
 }
index c2de900..02814b5 100644 (file)
@@ -23,7 +23,7 @@
  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  *
- * $Id: comstack.h,v 1.9 2003-03-03 19:57:35 adam Exp $
+ * $Id: comstack.h,v 1.10 2003-03-11 11:05:19 adam Exp $
  */
 
 #ifndef COMSTACK_H
@@ -147,6 +147,7 @@ YAZ_EXPORT const char *cs_strerror(COMSTACK h);
 YAZ_EXPORT const char *cs_errmsg(int n);
 YAZ_EXPORT COMSTACK cs_create_host(const char *type_and_host, 
                                    int blocking, void **vp);
+YAZ_EXPORT void cs_get_host_args(const char *type_and_host, const char **args);
 YAZ_EXPORT int cs_complete_auto(const unsigned char *buf, int len);
                                           
 /*