/* This file is part of Metaproxy.
- Copyright (C) 2005-2010 Index Data
+ Copyright (C) 2005-2011 Index Data
Metaproxy is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
mp::util::set_vhost_otherinfo(&init_apdu->u.initRequest->otherInfo,
odr, vhost_one);
- init_apdu->u.initRequest->idAuthentication = req->idAuthentication;
- Z_InitRequest *req = init_apdu->u.initRequest;
+ Z_InitRequest *breq = init_apdu->u.initRequest;
+
+ breq->idAuthentication = req->idAuthentication;
- ODR_MASK_SET(req->options, Z_Options_search);
- ODR_MASK_SET(req->options, Z_Options_present);
- ODR_MASK_SET(req->options, Z_Options_namedResultSets);
- ODR_MASK_SET(req->options, Z_Options_scan);
+ *breq->preferredMessageSize = *req->preferredMessageSize;
+ *breq->maximumRecordSize = *req->maximumRecordSize;
+
+ ODR_MASK_SET(breq->options, Z_Options_search);
+ ODR_MASK_SET(breq->options, Z_Options_present);
+ ODR_MASK_SET(breq->options, Z_Options_namedResultSets);
+ ODR_MASK_SET(breq->options, Z_Options_scan);
- ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_1);
- ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_2);
- ODR_MASK_SET(req->protocolVersion, Z_ProtocolVersion_3);
+ ODR_MASK_SET(breq->protocolVersion, Z_ProtocolVersion_1);
+ ODR_MASK_SET(breq->protocolVersion, Z_ProtocolVersion_2);
+ ODR_MASK_SET(breq->protocolVersion, Z_ProtocolVersion_3);
b->m_package->request() = init_apdu;
ODR_MASK_SET(f_resp->options, Z_Options_search);
ODR_MASK_SET(f_resp->options, Z_Options_present);
ODR_MASK_SET(f_resp->options, Z_Options_namedResultSets);
+ ODR_MASK_SET(f_resp->options, Z_Options_scan);
ODR_MASK_SET(f_resp->protocolVersion, Z_ProtocolVersion_1);
ODR_MASK_SET(f_resp->protocolVersion, Z_ProtocolVersion_2);
int no_failed = 0;
int no_succeeded = 0;
+
+ Odr_int preferredMessageSize = *req->preferredMessageSize;
+ Odr_int maximumRecordSize = *req->maximumRecordSize;
for (bit = m_backend_list.begin(); bit != m_backend_list.end(); )
{
PackagePtr p = (*bit)->m_package;
if (!ODR_MASK_GET(b_resp->protocolVersion, i))
ODR_MASK_CLEAR(f_resp->protocolVersion, i);
if (*b_resp->result)
+ {
no_succeeded++;
+ if (preferredMessageSize > *b_resp->preferredMessageSize)
+ preferredMessageSize = *b_resp->preferredMessageSize;
+ if (maximumRecordSize > *b_resp->maximumRecordSize)
+ maximumRecordSize = *b_resp->maximumRecordSize;
+ }
else
no_failed++;
}
no_failed++;
bit++;
}
+ *f_resp->preferredMessageSize = preferredMessageSize;
+ *f_resp->maximumRecordSize = maximumRecordSize;
+
if (m_p->m_hide_unavailable)
{
if (no_succeeded == 0)