X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-proxy.cpp;h=dcabc9127db05ae29b12f8690c45b22efbf5944a;hb=693903aedb3283277c3e3259dd5bc1e51ed30c76;hp=3ec98a153d7ebf1e08a7e0b3de0f0e677cef5673;hpb=a26937ed9db61e3973e2b297715fcfda43a537a4;p=yazproxy-moved-to-github.git diff --git a/src/yaz-proxy.cpp b/src/yaz-proxy.cpp index 3ec98a1..dcabc91 100644 --- a/src/yaz-proxy.cpp +++ b/src/yaz-proxy.cpp @@ -1,4 +1,4 @@ -/* $Id: yaz-proxy.cpp,v 1.62 2006-04-26 11:59:11 adam Exp $ +/* $Id: yaz-proxy.cpp,v 1.67 2006-06-09 09:01:31 adam Exp $ Copyright (c) 1998-2006, Index Data. This file is part of the yazproxy. @@ -432,6 +432,9 @@ IPDU_Observer *Yaz_Proxy::sessionNotify(IPDU_Observable char session_str[200]; const char *peername = the_PDU_Observable->getpeername(); + if (!peername) + peername = "nullpeer"; + if (m_log_mask & PROXY_LOG_IP_CLIENT) sprintf(session_str, "%ld:%d %.80s %d ", (long) time(0), m_session_no, peername, 0); @@ -452,9 +455,13 @@ IPDU_Observer *Yaz_Proxy::sessionNotify(IPDU_Observable new_proxy->set_default_target(m_default_target); new_proxy->m_max_clients = m_max_clients; new_proxy->m_log_mask = m_log_mask; + new_proxy->m_session_no = m_session_no; +#if 0 + // in case we want to watch a particular client.. if (!strcmp(peername, "tcp:163.121.19.82")) // NIS GROUP new_proxy->m_log_mask = 255; +#endif new_proxy->set_APDU_log(get_APDU_log()); if (new_proxy->m_log_mask & PROXY_LOG_APDU_CLIENT) @@ -601,8 +608,14 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu, const char *cookie, m_client_idletime = client_idletime; timeout(m_client_idletime); } + + // get those FILE descriptors available + m_parent->low_socket_close(); if (cql2rpn_fname) m_cql2rpn.set_pqf_file(cql2rpn_fname); + // reserve them again + m_parent->low_socket_open(); + if (negotiation_charset || negotiation_lang || default_client_query_charset) { set_proxy_negotiation(negotiation_charset, @@ -3122,8 +3135,9 @@ void Yaz_Proxy::handle_init(Z_APDU *apdu) handle_charset_lang_negotiation(apdu2); + if (m_timeout_mode == timeout_busy) + m_timeout_mode = timeout_normal; send_to_client(apdu2); - m_timeout_mode = timeout_normal; return; } } @@ -3691,7 +3705,9 @@ void Yaz_ProxyClient::recv_Z_PDU(Z_APDU *apdu, int len) *imv1 = '\0'; if (imv0) strcat(imv1, imv0); +#ifdef VERSION strcat(imv1, "/" VERSION); +#endif ir->implementationVersion = imv1; // apply YAZ Proxy implementation name