- if (sru && *sru)
- strcpy(ipport, "http://");
- strcat(ipport, host->ipport);
-
- ZOOM_connection_connect(link, ipport, 0);
-
- con->link = link;
- con->iochan = iochan_create(0, connection_handler, 0);
+ if (sru && *sru && !strstr(con->url, "://"))
+ {
+ WRBUF w = wrbuf_alloc();
+ wrbuf_puts(w, "http://");
+ wrbuf_puts(w, con->url);
+ ZOOM_connection_connect(con->link, wrbuf_cstr(w), 0);
+ wrbuf_destroy(w);
+ }
+ else if (strchr(con->url, '#'))
+ {
+ const char *cp = strchr(con->url, '#');
+ WRBUF w = wrbuf_alloc();
+ wrbuf_write(w, con->url, cp - con->url);
+ ZOOM_connection_connect(con->link, wrbuf_cstr(w), 0);
+ wrbuf_destroy(w);
+ }
+ else
+ {
+ ZOOM_connection_connect(con->link, con->url, 0);
+ }
+ con->iochan = iochan_create(-1, connection_handler, 0, "connection_socket");