X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fconnection.c;h=fecf51b9fd7f4a04278ae7f5e32f64cdfb1704d9;hb=15934c78c0fbb37a04f1a7a225a1cdee9854b257;hp=3fb061bcdc686de18ee98ddc84ea5d8a6aee2f3d;hpb=35326727916ab3dcfbf57bc6ab05c31a97aebd74;p=pazpar2-moved-to-github.git diff --git a/src/connection.c b/src/connection.c index 3fb061b..fecf51b 100644 --- a/src/connection.c +++ b/src/connection.c @@ -79,7 +79,7 @@ static int connection_is_idle(struct connection *co) if (!ZOOM_connection_is_idle(link)) return 0; event = ZOOM_connection_peek_event(link); - if (event == ZOOM_EVENT_NONE || event == ZOOM_EVENT_END) + if (event == ZOOM_EVENT_NONE) return 1; else return 0; @@ -159,6 +159,7 @@ static struct connection *connection_create(struct client *cl, static void non_block_events(struct connection *co) { + int got_records = 0; IOCHAN iochan = co->iochan; ZOOM_connection link = co->link; while (1) @@ -213,6 +214,7 @@ static void non_block_events(struct connection *co) break; case ZOOM_EVENT_RECV_RECORD: client_record_response(cl); + got_records = 1; break; default: yaz_log(YLOG_LOG, "Unhandled event (%d) from %s", @@ -220,6 +222,16 @@ static void non_block_events(struct connection *co) } client_destroy(cl); } + if (got_records) + { + struct client *cl = co->client; + if (cl) + { + client_incref(cl); + client_got_records(cl); + client_destroy(cl); + } + } } void connection_continue(struct connection *co) @@ -402,7 +414,7 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man) ZOOM_connection_connect(link, host->ipport, 0); con->link = link; - con->iochan = iochan_create(0, connection_handler, 0); + con->iochan = iochan_create(0, connection_handler, 0, "connection_socket"); con->state = Conn_Connecting; iochan_settimeout(con->iochan, con->operation_timeout); iochan_setdata(con->iochan, con);