Proxy removes OtherInfo Proxy Address and Session ID. Other
[yazpp-moved-to-github.git] / src / yaz-proxy.cpp
index 3ab7c52..a61233e 100644 (file)
@@ -4,7 +4,14 @@
  * Sebastian Hammer, Adam Dickmeiss
  * 
  * $Log: yaz-proxy.cpp,v $
- * Revision 1.7  1999-04-28 13:31:17  adam
+ * Revision 1.9  1999-09-13 12:53:44  adam
+ * Proxy removes OtherInfo Proxy Address and Session ID. Other
+ * Otherinfo remains untouched.
+ *
+ * Revision 1.8  1999/05/04 10:53:00  adam
+ * Changed the way the PROXY behaves when lost cookie is received.
+ *
+ * Revision 1.7  1999/04/28 13:31:17  adam
  * Better result set optimisation for proxy.
  *
  * Revision 1.6  1999/04/27 07:52:13  adam
@@ -71,7 +78,7 @@ char *Yaz_Proxy::get_cookie(Z_OtherInformation **otherInfo)
     assert (oid_ent_to_oid (&ent, oid));
 
     if (oid_ent_to_oid (&ent, oid) && 
-       (oi = update_otherInformation(otherInfo, 0, oid, 1)) &&
+       (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) &&
        oi->which == Z_OtherInfo_characterInfo)
        return oi->information.characterInfo;
     return 0;
@@ -86,7 +93,7 @@ char *Yaz_Proxy::get_proxy(Z_OtherInformation **otherInfo)
     ent.oclass = CLASS_USERINFO;
     ent.value = (oid_value) VAL_PROXY;
     if (oid_ent_to_oid (&ent, oid) &&
-       (oi = update_otherInformation(otherInfo, 0, oid, 1)) &&
+       (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) &&
        oi->which == Z_OtherInfo_characterInfo)
        return oi->information.characterInfo;
     return 0;
@@ -102,7 +109,7 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu)
     get_otherInfoAPDU(apdu, &oi);
     char *cookie = get_cookie(oi);
     logf (LOG_LOG, "Yaz_Proxy::get_client cookie=%s", cookie ? cookie :
-         "<null>");
+         "null");
     if (cookie)
     {
        for (c = parent->m_clientPool; c; c = c->m_next)
@@ -112,11 +119,12 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu)
            if (!strcmp(cookie,c->m_cookie))
            {
                logf (LOG_LOG, "Yaz_Proxy::get_client cached");
-               break;
+               return c;
            }
        }
+       
     }
-    else if (!m_client)
+    if (!m_client)
     {
        logf (LOG_LOG, "Yaz_Proxy::get_client creating new");
        c = new Yaz_ProxyClient(m_PDU_Observable->clone());
@@ -229,9 +237,12 @@ void Yaz_Proxy::recv_Z_PDU(Z_APDU *apdu)
     }
     m_client->m_server = this;
 
+#if 0
     Z_OtherInformation **oi;
     get_otherInfoAPDU(apdu, &oi);
     *oi = 0;
+#endif
+
     if (apdu->which == Z_APDU_initRequest)
     {
        if (m_client->m_init_flag)