client_set_connection(cl, new);
new->link = 0;
new->resultset = 0;
- new->state = Conn_Connecting;
+ new->state = Conn_Resolving;
if (host->ipport)
connection_connect(new);
return new;
else
{
connection_connect(con);
+ client_start_search(con->client);
}
}
else
struct host *host = connection_get_host(con);
ZOOM_options zoptions = ZOOM_options_create();
char *auth;
+ char *sru;
+ char ipport[512] = "";
struct session_database *sdb = client_get_database(con->client);
const char *zproxy = session_setting_oneval(sdb, PZ_ZPROXY);
if ((auth = (char*) session_setting_oneval(sdb, PZ_AUTHENTICATION)))
ZOOM_options_set(zoptions, "user", auth);
+ if ((sru = (char*) session_setting_oneval(sdb, PZ_SRU)) && *sru)
+ ZOOM_options_set(zoptions, "sru", sru);
if (!(link = ZOOM_connection_create(zoptions)))
{
ZOOM_options_destroy(zoptions);
return -1;
}
- ZOOM_connection_connect(link, host->ipport, 0);
+
+ 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);
co = connection_create(cl);
}
- if (co)
+ if (co && co->link)
return 1;
else
return 0;