X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcomstack.c;h=b81e89c61e5492ad861757eaed4bd1f7f735d101;hp=0df86783e6edeb72bb4028438052a04b37235cc8;hb=05ee6a02d78ff422ddb63bb4ebbc2f5988d9a121;hpb=88d3bedf772316f87e1996f655ccf8d1e2589755 diff --git a/src/comstack.c b/src/comstack.c index 0df8678..b81e89c 100644 --- a/src/comstack.c +++ b/src/comstack.c @@ -1,17 +1,19 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) 1995-2011 Index Data * See the file LICENSE for details. */ - /** * \file comstack.c * \brief Implements Generic COMSTACK functions */ +#if HAVE_CONFIG_H +#include +#endif #include -#include #include +#include #include #include #include @@ -155,6 +157,12 @@ static int cs_parse_host(const char *uri, const char **host, COMSTACK cs_create_host(const char *vhost, int blocking, void **vp) { + return cs_create_host_proxy(vhost, blocking, vp, 0); +} + +COMSTACK cs_create_host_proxy(const char *vhost, int blocking, void **vp, + const char *proxy_host) +{ enum oid_proto proto = PROTO_Z3950; const char *host = 0; COMSTACK cs; @@ -173,6 +181,8 @@ COMSTACK cs_create_host(const char *vhost, int blocking, void **vp) } if (cs) { + if (proxy_host) + host = proxy_host; if (!(*vp = cs_straddr(cs, connect_host ? connect_host : host))) { cs_close (cs); @@ -232,13 +242,13 @@ static int cs_read_chunk(const char *buf, int i, int len) printf ("i=%d len=%d\n", i, len); #endif return 0; - } else if (isdigit(buf[i])) + } else if (yaz_isdigit(buf[i])) chunk_len = chunk_len * 16 + (buf[i++] - '0'); - else if (isupper(buf[i])) + else if (yaz_isupper(buf[i])) chunk_len = chunk_len * 16 + (buf[i++] - ('A'-10)); - else if (islower(buf[i])) + else if (yaz_islower(buf[i])) chunk_len = chunk_len * 16 + (buf[i++] - ('a'-10)); else @@ -343,7 +353,7 @@ static int cs_complete_http(const char *buf, int len, int head_only) while (buf[i] == ' ') i++; content_len = 0; - while (i <= len-4 && isdigit(buf[i])) + while (i <= len-4 && yaz_isdigit(buf[i])) content_len = content_len*10 + (buf[i++] - '0'); if (content_len < 0) /* prevent negative offsets */ content_len = 0;