}
// Close connection and recycle structure
-void connection_destroy(struct connection *co)
+static void connection_destroy(struct connection *co)
{
if (co->link)
{
package.. We will just close the connection */
yaz_log(YLOG_LOG, "timeout connection %p event=%d", co, event);
connection_destroy(co);
+ yaz_mutex_leave(host->mutex);
}
else if (event & EVENT_TIMEOUT)
{
if (co->state == Conn_Connecting)
{
yaz_log(YLOG_WARN, "connect timeout %s", client_get_url(cl));
- client_fatal(cl);
+
+ connection_destroy(co);
+ client_set_state(cl, Client_Error);
}
else if (client_get_state(co->client) == Client_Idle)
{
{
yaz_log(YLOG_LOG, "ignore timeout %s", client_get_url(cl));
}
+ yaz_mutex_leave(host->mutex);
}
else
{
+ yaz_mutex_leave(host->mutex);
non_block_events(co);
ZOOM_connection_fire_event_socket(co->link, event);
non_block_events(co);
}
- yaz_mutex_leave(host->mutex);
}