{
Yaz_ProxyConfig *cfg = check_reconfigure();
if (cfg)
- cfg->target_authentication(m_default_target, odr_encode(),
+ cfg->target_authentication(m_default_target, odr_encode(),
apdu->u.initRequest);
}
handle_incoming_Z_PDU_2(apdu);
const char *default_charset)
{
yaz_log(YLOG_DEBUG, "%sSet the proxy negotiation: charset to '%s', "
- "default charset to '%s', language to '%s'", m_session_str,
+ "default charset to '%s', language to '%s'", m_session_str,
charset?charset:"none",
default_charset?default_charset:"none",
lang?lang:"none");
{
Z_OtherInformationUnit *oi =
update_otherInformation(otherInfo, 0, yaz_oid_userinfo_cookie, 1, 1);
-
+
if (oi && oi->which == Z_OtherInfo_characterInfo)
return oi->information.characterInfo;
return 0;
{
Z_OtherInformationUnit *oi =
update_otherInformation(otherInfo, 0, yaz_oid_userinfo_proxy, 1, 1);
-
+
if (oi && oi->which == Z_OtherInfo_characterInfo)
return oi->information.characterInfo;
return 0;
timeout(m_client_idletime);
}
- // get those FILE descriptors available
+ // 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,
{
assert(c->m_prev);
assert(*c->m_prev == c);
- if (c->m_server == 0 && c->m_cookie == 0 && c->m_waiting == 0
+ if (c->m_server == 0 && c->m_cookie == 0 && c->m_waiting == 0
&& c->compare_idAuthentication(apdu)
&& c->compare_charset(apdu)
&& !strcmp(m_proxyTarget, c->get_hostname()))
// found it in cache
yaz_log(YLOG_LOG, "%sREUSE %d %s",
m_session_str, parent->m_seqno, c->get_hostname());
-
+
c->m_seqno = parent->m_seqno;
assert(c->m_server == 0);
c->m_server = this;
else
timeout(0);
if (code == 401)
- z_HTTP_header_add(o, &hres->headers, "WWW-Authenticate",
+ z_HTTP_header_add(o, &hres->headers, "WWW-Authenticate",
"Basic realm=\"YAZ Proxy\"");
len += strlen(message);
if (details)
len += strlen(details);
-
+
record->recordData_buf = (char *) odr_malloc(o, len);
-
+
sprintf(record->recordData_buf, "<diagnostic "
"xmlns=\"http://www.loc.gov/zing/srw/diagnostic/\">\n"
" <uri>info:srw/diagnostic/1/%d</uri>\n", code);
{
#if YAZ_HAS_MK_SURROGATE
yaz_mk_sru_surrogate(
- o, srw_res->records + i, i+start,
+ o, srw_res->records + i, i+start,
YAZ_SRW_RECORD_NOT_AVAILABLE_IN_THIS_SCHEMA, 0);
#else
yazproxy_mk_sru_surrogate(
- o, srw_res->records + i, i+start,
+ o, srw_res->records + i, i+start,
YAZ_SRW_RECORD_NOT_AVAILABLE_IN_THIS_SCHEMA, 0);
#endif
continue;
}
Z_External *r = npr->u.databaseRecord;
- if (r->which == Z_External_octet
+ if (r->which == Z_External_octet
&& !oid_oidcmp(r->direct_reference, yaz_oid_recsyn_xml))
{
srw_res->records[i].recordSchema = m_schema;
{
#if YAZ_HAS_MK_SURROGATE
yaz_mk_sru_surrogate(
- o, srw_res->records + i, i+start,
+ o, srw_res->records + i, i+start,
YAZ_SRW_RECORD_NOT_AVAILABLE_IN_THIS_SCHEMA, 0);
#else
yazproxy_mk_sru_surrogate(
- o, srw_res->records + i, i+start,
+ o, srw_res->records + i, i+start,
YAZ_SRW_RECORD_NOT_AVAILABLE_IN_THIS_SCHEMA, 0);
#endif
}
srw_res->terms[i].numberOfRecords = odr_intdup(o,
*entries->entries[i]->u.termInfo->globalOccurrences);
else
- srw_res->terms[i].numberOfRecords = NULL;
+ srw_res->terms[i].numberOfRecords = NULL;
if (entries->entries[i]->u.termInfo->displayTerm != NULL)
srw_res->terms[i].displayTerm = odr_strdup(o,
entries->entries[i]->u.termInfo->displayTerm);
void Yaz_ProxyClient::set_idAuthentication(Z_APDU *apdu)
{
Z_IdAuthentication *t = apdu->u.initRequest->idAuthentication;
-
+
odr_reset(m_idAuthentication_odr);
z_IdAuthentication(m_idAuthentication_odr, &t, 1, 0);
m_idAuthentication_ber_buf =
- odr_getbuf(m_idAuthentication_odr,
+ odr_getbuf(m_idAuthentication_odr,
&m_idAuthentication_ber_size, 0);
}
Z_APDU *new_apdu = create_Z_PDU(Z_APDU_presentResponse);
new_apdu->u.presentResponse->records =
create_nonSurrogateDiagnostics(
- odr_encode(),
+ odr_encode(),
YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
pr->resultSetId);
send_to_client(new_apdu);
Z_APDU *new_apdu = create_Z_PDU(Z_APDU_presentResponse);
new_apdu->u.presentResponse->records =
create_nonSurrogateDiagnostics(
- odr_encode(),
- YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE,
+ odr_encode(),
+ YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE,
0);
send_to_client(new_apdu);
return 0;
Z_APDU *new_apdu = create_Z_PDU(Z_APDU_presentResponse);
new_apdu->u.presentResponse->records =
create_nonSurrogateDiagnostics(
- odr_encode(),
+ odr_encode(),
YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE,
0);
send_to_client(new_apdu);
// Not a present request.. But can't find better diagnostic
new_apdu->u.searchResponse->records =
create_nonSurrogateDiagnostics(
- odr_encode(),
+ odr_encode(),
YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE, 0);
send_to_client(new_apdu);
return 0;
if (toget > m_client->m_last_resultCount)
toget = m_client->m_last_resultCount;
-
+
if (sr->mediumSetElementSetNames)
{
comp = (Z_RecordComposition *)
#if 0
// try to make a _bad_ attribute set ID .. Don't enable this in prod.
- if (apdu->which == Z_GDU_Z3950
+ if (apdu->which == Z_GDU_Z3950
&& apdu->u.z3950->which == Z_APDU_searchRequest)
{
Z_SearchRequest *req = apdu->u.z3950->u.searchRequest;
xfree(m_peername);
m_peername = (char*) xmalloc(strlen(x_forwarded_for)+5);
sprintf(m_peername, "tcp:%s", x_forwarded_for);
-
+
yaz_log(YLOG_LOG, "%sHTTP Forwarded from %s", m_session_str,
m_peername);
if (m_log_mask & PROXY_LOG_IP_CLIENT)
m_session_str, connect_total, max_connect);
block = true;
}
- else
+ else
block = false;
yaz_log(YLOG_LOG, "%sconnect accepted total=%d", m_session_str,
connect_total);
-
+
int limit_connect = m_parent->m_limit_connect;
if (limit_connect)
reduce = connect_total / limit_connect;
HTTP_Forwarded(gdu->get());
int reduce = 0;
-
+
if (m_request_no == 1)
{
bool block = false;
-
+
connect_stat(block, reduce);
if (block)
Z_InitResponse *initResponse = apdu->u.initResponse;
Z_OtherInformation **otherInfo;
get_otherInfoAPDU(apdu, &otherInfo);
-
+
Z_CharSetandLanguageNegotiation *charneg = 0;
- if (otherInfo && *otherInfo &&
+ if (otherInfo && *otherInfo &&
ODR_MASK_GET(initResponse->options, Z_Options_negotiationModel)
&& (charneg = yaz_get_charneg_record(*otherInfo)))
{
if (m_initRequest_options)
ODR_MASK_SET(m_initRequest_options,
Z_Options_negotiationModel);
-
- oi->which = Z_OtherInfo_externallyDefinedInfo;
+
+ oi->which = Z_OtherInfo_externallyDefinedInfo;
oi->information.externallyDefinedInfo =
yaz_set_response_charneg(
odr_encode(),
sr->preferredRecordSyntax =
yaz_string_to_oid_odr(
yaz_oid_std(), CLASS_RECSYN,
- m_backend_type ? m_backend_type : "usmarc",
+ m_backend_type ? m_backend_type : "usmarc",
odr_encode());
}
else if (err)
else if (m_backend_type)
{
sr->preferredRecordSyntax =
- yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN,
+ yaz_string_to_oid_odr(yaz_oid_std(), CLASS_RECSYN,
m_backend_type, odr_encode());
}
}
pr->preferredRecordSyntax =
yaz_string_to_oid_odr(
yaz_oid_std(), CLASS_RECSYN,
- m_backend_type ? m_backend_type : "usmarc",
+ m_backend_type ? m_backend_type : "usmarc",
odr_encode());
}
else if (err)
{
pr->preferredRecordSyntax =
yaz_string_to_oid_odr(yaz_oid_std(),
- CLASS_RECSYN, m_backend_type,
+ CLASS_RECSYN, m_backend_type,
odr_encode());
}
}
m_s2z_scan_apdu = 0;
m_s2z_stylesheet = 0;
-
+
Z_IdAuthentication *auth = NULL;
if (srw_pdu->username && !srw_pdu->password)
{
}
auth->u.idPass->userId = odr_strdup(m_s2z_odr_init, authorization_str);
}
- }
-
+ }
+
if (srw_pdu->which == Z_SRW_searchRetrieve_request)
{
ODR_MASK_SET(m_s2z_init_apdu->u.initRequest->options, Z_Options_scan);
m_s2z_init_apdu->u.initRequest->idAuthentication = auth;
-
+
// prevent m_initRequest_apdu memory from being grabbed
// in Yaz_Proxy::handle_incoming_Z_PDU
m_initRequest_apdu = m_s2z_init_apdu;
else if (srw_pdu->which == Z_SRW_scan_request)
{
Z_SRW_scanRequest *srw_req = srw_pdu->u.scan_request;
-
+
const char *backend_db = srw_req->database;
srw_get_client(srw_req->database, &backend_db);
Z_APDU *apdu2 = m_client->m_initResponse;
apdu2->u.initResponse->otherInfo = 0;
if (m_client->m_cookie && *m_client->m_cookie)
- set_otherInformationString(apdu2, yaz_oid_userinfo_cookie,
+ set_otherInformationString(apdu2, yaz_oid_userinfo_cookie,
1, m_client->m_cookie);
apdu2->u.initResponse->referenceId =
apdu->u.initRequest->referenceId;
m->m_apdu_buf = (char*) nmem_malloc(m->m_nmem, m->m_apdu_len);
memcpy(m->m_apdu_buf, apdu_buf, m->m_apdu_len);
odr_reset(odr_encode());
-
+
inc_ref();
m_my_thread->put(m);
}
{
Z_SRW_diagnostic *diagnostic = 0;
int num_diagnostic = 0;
-
+
yaz_add_srw_diagnostic(odr_encode(),
&diagnostic, &num_diagnostic,
YAZ_SRW_SYSTEM_TEMPORARILY_UNAVAILABLE, addr);
send_srw_scan_response(diagnostic, num_diagnostic);
else
send_srw_explain_response(diagnostic, num_diagnostic);
- }
+ }
}
void Yaz_ProxyClient::failNotify()
*apdu->u.initResponse->maximumRecordSize;
Z_InitResponse *ir = apdu->u.initResponse;
-
+
// apply YAZ Proxy version
char *imv0 = ir->implementationVersion;
char *imv1 = (char*)
strcat(imv1, "/" VERSION);
#endif
ir->implementationVersion = imv1;
-
+
// apply YAZ Proxy implementation name
char *im0 = ir->implementationName;
char *im1 = (char*)