X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fseshigh.c;h=b0349e7391b69f751a14b4f2e45f4609064b64ea;hb=6e3d70edfadd110351b71466c51632e288e31773;hp=19c771d74a648a53fcd3553997a6bdd732c65a15;hpb=8356ea58313ee1f350226172cf99bfb0b7c5583c;p=yaz-moved-to-github.git diff --git a/src/seshigh.c b/src/seshigh.c index 19c771d..b0349e7 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -377,7 +377,7 @@ void ir_session(IOCHAN h, int event) { if (assoc->state != ASSOC_UP) { - yaz_log(YLOG_DEBUG, "Final timeout - closing connection."); + yaz_log(log_session, "Timeout. Closing connection"); /* do we need to lod this at all */ cs_close(conn); destroy_association(assoc); @@ -385,8 +385,7 @@ void ir_session(IOCHAN h, int event) } else { - yaz_log(log_sessiondetail, - "Session idle too long. Sending close."); + yaz_log(log_sessiondetail, "Timeout. Sending Z39.50 Close"); do_close(assoc, Z_Close_lackOfActivity, 0); } return; @@ -848,9 +847,10 @@ static int ccl2pqf(ODR odr, const Odr_oct *ccl, CCL_bibset bibset, static void srw_bend_search(association *assoc, request *req, Z_SRW_PDU *sr, - Z_SRW_searchRetrieveResponse *srw_res, + Z_SRW_PDU *res, int *http_code) { + Z_SRW_searchRetrieveResponse *srw_res = res->u.response; int srw_error = 0; Z_External *ext; Z_SRW_searchRetrieveRequest *srw_req = sr->u.request; @@ -873,6 +873,8 @@ static void srw_bend_search(association *assoc, request *req, rr.partial_resultset = 0; rr.query = (Z_Query *) odr_malloc(assoc->decode, sizeof(*rr.query)); rr.query->u.type_1 = 0; + rr.extra_args = sr->extra_args; + rr.extra_response_data = 0; if (srw_req->query_type == Z_SRW_query_type_cql) { @@ -1094,6 +1096,11 @@ static void srw_bend_search(association *assoc, request *req, srw_res->records = 0; } } + if (rr.extra_response_data) + { + res->extraResponseData_buf = rr.extra_response_data; + res->extraResponseData_len = strlen(rr.extra_response_data); + } if (rr.estimated_hit_count || rr.partial_resultset) { yaz_add_srw_diagnostic( @@ -1691,6 +1698,7 @@ static void process_http_request(association *assoc, request *req) int num_diagnostic = 0; const char *host = z_HTTP_header_lookup(hreq->headers, "Host"); + yaz_log(log_request, "%s %s HTTP/%s", hreq->method, hreq->path, hreq->version); if (!control_association(assoc, host, 0)) { p = z_get_HTTP_Response(o, 404); @@ -1783,8 +1791,7 @@ static void process_http_request(association *assoc, request *req) } else { - srw_bend_search(assoc, req, sr, res->u.response, - &http_code); + srw_bend_search(assoc, req, sr, res, &http_code); } if (http_code == 200) soap_package->u.generic->p = res; @@ -2364,6 +2371,9 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) binitres->errstring); *resp->result = 0; } + else + assoc->state = ASSOC_UP; + if (log_request) { if (!req->idAuthentication) @@ -2625,6 +2635,8 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrr->srw_setnameIdleTime = 0; bsrr->estimated_hit_count = 0; bsrr->partial_resultset = 0; + bsrr->extra_args = 0; + bsrr->extra_response_data = 0; yaz_log (log_requestdetail, "ResultSet '%s'", req->resultSetName); if (req->databaseNames)