/* This file is part of Pazpar2.
- Copyright (C) 2006-2012 Index Data
+ Copyright (C) 2006-2013 Index Data
Pazpar2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
#endif
switch (ev)
{
+ case ZOOM_EVENT_TIMEOUT:
+ break;
case ZOOM_EVENT_END:
{
const char *error, *addinfo;
}
else if (event & EVENT_TIMEOUT)
{
- if (co->state == Conn_Connecting)
- {
- yaz_log(YLOG_WARN, "%p connect timeout %s", co, client_get_id(cl));
+ ZOOM_connection_fire_event_timeout(co->link);
+ client_lock(cl);
+ non_block_events(co);
+ client_unlock(cl);
- client_set_state(cl, Client_Error);
- remove_connection_from_host(co);
- yaz_mutex_leave(host->mutex);
- connection_destroy(co);
- }
- else
- {
- yaz_log(YLOG_LOG, "%p Connection idle timeout %s", co, client_get_id(cl));
- remove_connection_from_host(co);
- yaz_mutex_leave(host->mutex);
- connection_destroy(co);
- }
+ remove_connection_from_host(co);
+ yaz_mutex_leave(host->mutex);
+ connection_destroy(co);
}
else
{
return -1;
}
- if (sru && *sru)
+ if (sru && *sru && !strstr(host->url, "://"))
{
- char http_hostport[512];
- strcpy(http_hostport, "http://");
- strcat(http_hostport, host->url);
- yaz_log(YLOG_LOG, "SRU connect to : %s", http_hostport);
- ZOOM_connection_connect(con->link, http_hostport, 0);
+ WRBUF w = wrbuf_alloc();
+ wrbuf_puts(w, "http://");
+ wrbuf_puts(w, host->url);
+ ZOOM_connection_connect(con->link, wrbuf_cstr(w), 0);
+ wrbuf_destroy(w);
}
else
{