X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcomstack.c;h=b81e89c61e5492ad861757eaed4bd1f7f735d101;hp=a5f969d0b761b35d24844d1ea013280ca71c9e2f;hb=15aeea31b59ead99109571dcf67a5f3b78fd5585;hpb=d0e351c12fff564d876958e860338d43716dc269 diff --git a/src/comstack.c b/src/comstack.c index a5f969d..b81e89c 100644 --- a/src/comstack.c +++ b/src/comstack.c @@ -1,5 +1,5 @@ /* 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. */ /** @@ -11,9 +11,9 @@ #endif #include -#include #include +#include #include #include #include @@ -157,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; @@ -175,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); @@ -234,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 @@ -345,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;