X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_z3950_client.cpp;h=9975aa6c48de64cfe7a817b9a21569d6cf2d15bd;hb=e372ad52d73479587bf08a53829b1025f734bda9;hp=44d54503329a8dceca40c60fc21986a1be780f52;hpb=149e965b5ce014cd959c682fd411bd4bdd43f497;p=metaproxy-moved-to-github.git diff --git a/src/filter_z3950_client.cpp b/src/filter_z3950_client.cpp index 44d5450..9975aa6 100644 --- a/src/filter_z3950_client.cpp +++ b/src/filter_z3950_client.cpp @@ -1,4 +1,4 @@ -/* $Id: filter_z3950_client.cpp,v 1.18 2006-01-09 21:20:15 adam Exp $ +/* $Id: filter_z3950_client.cpp,v 1.20 2006-01-13 15:09:35 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -6,7 +6,6 @@ #include "config.hpp" -#include "xmlutil.hpp" #include "filter.hpp" #include "package.hpp" #include "util.hpp" @@ -109,7 +108,12 @@ void yf::Z3950Client::Assoc::failNotify() if (m_package) { - m_package->response() = odr.create_close(Z_Close_peerAbort, 0); + Z_GDU *gdu = m_package->request().get(); + Z_APDU *apdu = 0; + if (gdu && gdu->which == Z_GDU_Z3950) + apdu = gdu->u.z3950; + + m_package->response() = odr.create_close(apdu, Z_Close_peerAbort, 0); m_package->session().close(); } } @@ -125,10 +129,17 @@ void yf::Z3950Client::Assoc::timeoutNotify() if (m_package) { + Z_GDU *gdu = m_package->request().get(); + Z_APDU *apdu = 0; + if (gdu && gdu->which == Z_GDU_Z3950) + apdu = gdu->u.z3950; + if (m_connected) - m_package->response() = odr.create_close(Z_Close_lackOfActivity, 0); + m_package->response() = + odr.create_close(apdu, Z_Close_lackOfActivity, 0); else - m_package->response() = odr.create_close(Z_Close_peerAbort, 0); + m_package->response() = + odr.create_close(apdu, Z_Close_peerAbort, 0); m_package->session().close(); } @@ -205,7 +216,8 @@ yf::Z3950Client::Assoc *yf::Z3950Client::Rep::get_assoc(Package &package) { yp2::odr odr; - package.response() = odr.create_close(Z_Close_protocolError, + package.response() = odr.create_close(apdu, + Z_Close_protocolError, "First PDU was not an " "Initialize Request"); package.session().close(); @@ -220,6 +232,7 @@ yf::Z3950Client::Assoc *yf::Z3950Client::Rep::get_assoc(Package &package) { yp2::odr odr; package.response() = odr.create_initResponse( + apdu, YAZ_BIB1_INIT_NEGOTIATION_OPTION_REQUIRED, "Virtual host not given");