projects
/
yazpp-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Working on UrsulaRenewal, Request, and Update
[yazpp-moved-to-github.git]
/
src
/
yaz-proxy.cpp
diff --git
a/src/yaz-proxy.cpp
b/src/yaz-proxy.cpp
index
e0ec329
..
8609021
100644
(file)
--- a/
src/yaz-proxy.cpp
+++ b/
src/yaz-proxy.cpp
@@
-1,9
+1,15
@@
/*
/*
- * Copyright (c) 1998-2000, Index Data.
+ * Copyright (c) 1998-2001, Index Data.
* See the file LICENSE for details.
*
* $Log: yaz-proxy.cpp,v $
* See the file LICENSE for details.
*
* $Log: yaz-proxy.cpp,v $
- * Revision 1.22 2000-11-20 11:27:33 adam
+ * Revision 1.24 2001-04-10 10:48:08 adam
+ * Fixed problem where proxy could cash bad result sets.
+ *
+ * Revision 1.23 2001/03/26 14:43:49 adam
+ * New threaded PDU association.
+ *
+ * Revision 1.22 2000/11/20 11:27:33 adam
* Fixes for connect operation (timeout and notify fix).
*
* Revision 1.21 2000/11/01 14:22:59 adam
* Fixes for connect operation (timeout and notify fix).
*
* Revision 1.21 2000/11/01 14:22:59 adam
@@
-113,8
+119,8
@@
void Yaz_Proxy::set_proxyTarget(const char *target)
m_proxyTarget = (char *) xstrdup (target);
}
m_proxyTarget = (char *) xstrdup (target);
}
-IYaz_PDU_Observer *Yaz_Proxy::clone(IYaz_PDU_Observable
- *the_PDU_Observable, int fd)
+IYaz_PDU_Observer *Yaz_Proxy::sessionNotify(IYaz_PDU_Observable
+ *the_PDU_Observable, int fd)
{
Yaz_Proxy *new_proxy = new Yaz_Proxy(the_PDU_Observable);
new_proxy->m_parent = this;
{
Yaz_Proxy *new_proxy = new Yaz_Proxy(the_PDU_Observable);
new_proxy->m_parent = this;
@@
-486,8
+492,8
@@
void Yaz_ProxyClient::connectNotify()
timeout(600);
}
timeout(600);
}
-IYaz_PDU_Observer *Yaz_ProxyClient::clone(IYaz_PDU_Observable
- *the_PDU_Observable, int fd)
+IYaz_PDU_Observer *Yaz_ProxyClient::sessionNotify(IYaz_PDU_Observable
+ *the_PDU_Observable, int fd)
{
return new Yaz_ProxyClient(the_PDU_Observable);
}
{
return new Yaz_ProxyClient(the_PDU_Observable);
}
@@
-532,7
+538,17
@@
void Yaz_ProxyClient::recv_Z_PDU(Z_APDU *apdu)
m_waiting = 0;
logf (LOG_LOG, "Yaz_ProxyClient::recv_Z_PDU %s", get_hostname());
if (apdu->which == Z_APDU_searchResponse)
m_waiting = 0;
logf (LOG_LOG, "Yaz_ProxyClient::recv_Z_PDU %s", get_hostname());
if (apdu->which == Z_APDU_searchResponse)
+ {
m_last_resultCount = *apdu->u.searchResponse->resultCount;
m_last_resultCount = *apdu->u.searchResponse->resultCount;
+ int status = *apdu->u.searchResponse->searchStatus;
+ if (! status || (
+ apdu->u.searchResponse->records &&
+ apdu->u.searchResponse->records->which != Z_Records_DBOSD))
+ {
+ delete m_last_query;
+ m_last_query = 0;
+ }
+ }
if (apdu->which == Z_APDU_presentResponse && m_sr_transform)
{
m_sr_transform = 0;
if (apdu->which == Z_APDU_presentResponse && m_sr_transform)
{
m_sr_transform = 0;