X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fseshigh.c;h=2ac95fd2c5f009d10b5bc07e0bbe7aae23c47d37;hb=0face583d9eded63ad552038b3cbae607866f646;hp=92627c26a0e5c9fd716f5bc7748ef255446f4e7b;hpb=2715f6522ca62ab5dbc886c21ed18945743216f0;p=yaz-moved-to-github.git diff --git a/src/seshigh.c b/src/seshigh.c index 92627c2..2ac95fd 100644 --- a/src/seshigh.c +++ b/src/seshigh.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2011 Index Data + * Copyright (C) 1995-2012 Index Data * See the file LICENSE for details. */ /** @@ -270,11 +270,10 @@ int ir_read(IOCHAN h, int event) if ((assoc->cs_put_mask & EVENT_INPUT) == 0 && (event & assoc->cs_get_mask)) { - yaz_log(YLOG_DEBUG, "ir_session (input)"); /* We aren't speaking to this fellow */ if (assoc->state == ASSOC_DEAD) { - yaz_log(log_sessiondetail, "Connection closed - end of session"); + yaz_log(log_session, "Connection closed - end of session"); cs_close(conn); destroy_association(assoc); iochan_destroy(h); @@ -297,10 +296,8 @@ int ir_read(IOCHAN h, int event) } else if (res <= 0) { + assoc->state = ASSOC_DEAD; yaz_log(log_session, "Connection closed by client"); - cs_close(conn); - destroy_association(assoc); - iochan_destroy(h); return 0; } else if (res == 1) /* incomplete read - wait for more */ @@ -447,7 +444,6 @@ void ir_session(IOCHAN h, int event) yaz_log(YLOG_DEBUG, "HTTP out:\n%.*s", req->len_response, req->response); #endif - nmem_destroy(req->request_mem); request_deq(&assoc->outgoing); request_release(req); if (!request_head(&assoc->outgoing)) @@ -764,7 +760,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, int r; int srw_errcode = 0; const char *add = 0; - char rpn_buf[5120]; + WRBUF rpn_buf = wrbuf_alloc(); *sortkeys_p = 0; r = cql_parser_string(cp, cql); @@ -777,7 +773,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, struct cql_node *cn = cql_parser_result(cp); /* Syntax OK */ - r = cql_transform_buf(ct, cn, rpn_buf, sizeof(rpn_buf)-1); + r = cql_transform(ct, cn, wrbuf_vp_puts, rpn_buf); if (r) srw_errcode = cql_transform_error(ct, &add); else @@ -803,7 +799,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, /* Syntax & transform OK. */ /* Convert PQF string to Z39.50 to RPN query struct */ YAZ_PQF_Parser pp = yaz_pqf_create(); - Z_RPNQuery *rpnquery = yaz_pqf_parse(pp, odr, rpn_buf); + Z_RPNQuery *rpnquery = yaz_pqf_parse(pp, odr, wrbuf_cstr(rpn_buf)); if (!rpnquery) { size_t off; @@ -821,6 +817,7 @@ static int cql2pqf(ODR odr, const char *cql, cql_transform_t ct, yaz_pqf_destroy(pp); } cql_parser_destroy(cp); + wrbuf_destroy(rpn_buf); return srw_errcode; }