X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-ir-assoc.cpp;h=a6eac26505ef38c8eef1f1a727cf3141def1d7d7;hb=bdcac7907b800a337f95d5bb69b2d1800cc6eef9;hp=ad24cb262f915fa508df746d5225f8fdb64bbdbc;hpb=3109185a2036377894be1dd303d899a305b44281;p=yazpp-moved-to-github.git diff --git a/src/yaz-ir-assoc.cpp b/src/yaz-ir-assoc.cpp index ad24cb2..a6eac26 100644 --- a/src/yaz-ir-assoc.cpp +++ b/src/yaz-ir-assoc.cpp @@ -4,7 +4,21 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: yaz-ir-assoc.cpp,v $ - * Revision 1.6 1999-04-20 10:30:05 adam + * Revision 1.10 1999-04-29 07:33:28 adam + * Changed setting of host in connect/proxy setting. YAZ' strtoaddr now + * ignores database part of host. + * + * Revision 1.9 1999/04/28 13:29:14 adam + * Yet another fix regarding database settings. + * + * Revision 1.8 1999/04/28 13:04:03 adam + * Fixed setting of proxy otherInfo so that database(s) are removed. + * + * Revision 1.7 1999/04/21 12:09:01 adam + * Many improvements. Modified to proxy server to work with "sessions" + * based on cookies. + * + * Revision 1.6 1999/04/20 10:30:05 adam * Implemented various stuff for client and proxy. Updated calls * to ODR to reflect new name parameter. * @@ -153,33 +167,6 @@ void Yaz_IR_Assoc::get_elementSetName (const char **elementSetName) *elementSetName = m_elementSetNames->u.generic; } -void Yaz_IR_Assoc::set_otherInformationString ( - Z_OtherInformation **otherInformation, - int oidval, int categoryValue, - const char *str) -{ - int oid[OID_SIZE]; - struct oident ent; - ent.proto = PROTO_Z3950; - ent.oclass = CLASS_USERINFO; - ent.value = (oid_value) oidval; - if (!oid_ent_to_oid (&ent, oid)) - return ; - set_otherInformationString(otherInformation, oid, categoryValue, str); -} - -void Yaz_IR_Assoc::set_otherInformationString ( - Z_OtherInformation **otherInformation, - int *oid, int categoryValue, - const char *str) -{ - Z_OtherInformationUnit *oi = - update_otherInformation(otherInformation, 1, oid, categoryValue); - if (!oi) - return; - oi->information.characterInfo = odr_strdup (odr_encode(), str); -} - void Yaz_IR_Assoc::recv_Z_PDU(Z_APDU *apdu) { logf (LOG_LOG, "recv_Z_PDU"); @@ -237,7 +224,10 @@ int Yaz_IR_Assoc::send_searchRequest(Yaz_Z_Query *query) logf (LOG_LOG, "send_searchRequest"); assert (req->otherInfo == 0); if (m_cookie) + { set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie); + assert (req->otherInfo); + } return send_Z_PDU(apdu); } @@ -277,16 +267,24 @@ int Yaz_IR_Assoc::send_presentRequest(int start, int number) void Yaz_IR_Assoc::set_proxy(const char *str) { - delete m_proxy; - m_proxy = new char[strlen(str)+1]; - strcpy (m_proxy, str); + delete [] m_proxy; + m_proxy = 0; + if (str) + { + m_proxy = new char[strlen(str)+1]; + strcpy (m_proxy, str); + } } void Yaz_IR_Assoc::set_cookie(const char *str) { - delete m_cookie; - m_cookie = new char[strlen(str)+1]; - strcpy(m_cookie, str); + delete [] m_cookie; + m_cookie = 0; + if (str) + { + m_cookie = new char[strlen(str)+1]; + strcpy(m_cookie, str); + } } const char *Yaz_IR_Assoc::get_cookie() @@ -299,17 +297,10 @@ void Yaz_IR_Assoc::client(const char *addr) delete [] m_host; m_host = new char[strlen(addr)+1]; strcpy(m_host, addr); - const char *zurl_p = (m_proxy ? m_proxy : m_host); - char *zurl = new char[strlen(zurl_p)+1]; - strcpy(zurl, zurl_p); - char *dbpart = strchr(zurl, '/'); + const char *dbpart = strchr(m_host, '/'); if (dbpart) - { set_databaseNames (dbpart+1, "+ "); - *dbpart = '\0'; - } - Yaz_Z_Assoc::client(zurl); - delete [] zurl; + Yaz_Z_Assoc::client(m_proxy ? m_proxy : m_host); } const char *Yaz_IR_Assoc::get_proxy()