+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;
+ CS_TYPE t;
+ char *connect_host = 0;
+
+ if (!cs_parse_host(vhost, &host, &t, &proto, &connect_host))
+ return 0;
+
+ if (proxy_host)
+ {
+ enum oid_proto proto1;
+
+ xfree(connect_host);
+ if (!cs_parse_host(proxy_host, &host, &t, &proto1, &connect_host))
+ return 0;
+ }
+
+ if (t == tcpip_type)
+ {
+ cs = yaz_tcpip_create(-1, blocking, proto, connect_host ? host : 0);
+ }
+ else
+ {
+ cs = cs_create(t, blocking, proto);
+ }
+ if (cs)