From 30de094a4a567f7fada6d5932e23921770ac671c Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 11 Mar 2003 11:05:19 +0000 Subject: [PATCH] New function cs_get_host_args for method/host/path parsing. --- comstack/comstack.c | 20 +++++++++++++++++++- comstack/tcpip.c | 27 ++++++++++++++++++++------- include/yaz/comstack.h | 3 ++- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/comstack/comstack.c b/comstack/comstack.c index a9d73bd..b621522 100644 --- a/comstack/comstack.c +++ b/comstack/comstack.c @@ -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 @@ -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; diff --git a/comstack/tcpip.c b/comstack/tcpip.c index b1f4f73..5f24ef3 100644 --- a/comstack/tcpip.c +++ b/comstack/tcpip.c @@ -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 @@ -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; } diff --git a/include/yaz/comstack.h b/include/yaz/comstack.h index c2de900..02814b5 100644 --- a/include/yaz/comstack.h +++ b/include/yaz/comstack.h @@ -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); /* -- 1.7.10.4