X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=src%2Fyaz-proxy.cpp;h=f296d79b8e8b700816a55c26c525ddd25842f293;hp=f096210218ac448730507b08708d5363b79315dc;hb=aea59072802dbcc47655a4ed12b9ae28b89fea8e;hpb=32c6e333211e98fe4ad78fb86f2c9acd444ca24f diff --git a/src/yaz-proxy.cpp b/src/yaz-proxy.cpp index f096210..f296d79 100644 --- a/src/yaz-proxy.cpp +++ b/src/yaz-proxy.cpp @@ -1,4 +1,4 @@ -/* $Id: yaz-proxy.cpp,v 1.37 2005-09-26 09:25:06 adam Exp $ +/* $Id: yaz-proxy.cpp,v 1.39 2005-11-25 19:37:28 adam Exp $ Copyright (c) 1998-2005, Index Data. This file is part of the yaz-proxy. @@ -1107,6 +1107,9 @@ int Yaz_Proxy::send_http_response(int code) m_bytes_sent += len; m_bw_stat.add_bytes(len); logtime(); + + recv_GDU_more(true); + return r; } @@ -1153,6 +1156,9 @@ int Yaz_Proxy::send_srw_response(Z_SRW_PDU *srw_pdu) m_bytes_sent += len; m_bw_stat.add_bytes(len); logtime(); + + recv_GDU_more(true); + return r; } @@ -1830,8 +1836,8 @@ void Yaz_Proxy::recv_GDU_more(bool normal) void Yaz_Proxy::recv_GDU_normal(GDU *gdu) { - Z_GDU *apdu = gdu->get(); - gdu->extract_odr_to(odr_decode()); + Z_GDU *apdu = 0; + gdu->move_away_gdu(odr_decode(), &apdu); delete gdu; if (apdu->which == Z_GDU_Z3950) @@ -2453,6 +2459,7 @@ int Yaz_Proxy::file_access(Z_HTTP_Request *hreq) } int len; send_GDU(gdu, &len); + recv_GDU_more(true); return 1; } @@ -2606,7 +2613,8 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) const char *pqf_msg; size_t off; int code = yaz_pqf_error (pqf_parser, &pqf_msg, &off); - yaz_log(YLOG_LOG, "%*s^\n", off+4, ""); + int ioff = off; + yaz_log(YLOG_LOG, "%*s^\n", ioff+4, ""); yaz_log(YLOG_LOG, "Bad PQF: %s (code %d)\n", pqf_msg, code); send_to_srw_client_error(10, 0);