* See the file LICENSE for details.
*
* $Log: seshigh.c,v $
- * Revision 1.117 2001-06-13 20:47:40 adam
+ * Revision 1.119 2001-09-24 21:51:55 adam
+ * New Z39.50 OID utilities: yaz_oidval_to_z3950oid, yaz_str_to_z3950oid
+ * and yaz_z3950oid_to_str.
+ *
+ * Revision 1.118 2001/07/19 19:51:41 adam
+ * Added typecasts to make C++ happy.
+ *
+ * Revision 1.117 2001/06/13 20:47:40 adam
* When error is returned from present handler, non-surrogate diagnostic
* is returned in present response (and fetch handler is no longer called).
*
req = request_get(&assoc->incoming); /* get a new request structure */
odr_reset(assoc->decode);
odr_setbuf(assoc->decode, assoc->input_buffer, res, 0);
- if (!z_APDU(assoc->decode, &req->request, 0, 0))
+ if (!z_APDU(assoc->decode, &req->apdu_request, 0, 0))
{
yaz_log(LOG_LOG, "ODR error on incoming PDU: %s [near byte %d] ",
odr_errmsg(odr_geterror(assoc->decode)),
return;
}
req->request_mem = odr_extract_mem(assoc->decode);
- if (assoc->print && !z_APDU(assoc->print, &req->request, 0, 0))
+ if (assoc->print && !z_APDU(assoc->print, &req->apdu_request, 0, 0))
{
yaz_log(LOG_WARN, "ODR print error: %s",
odr_errmsg(odr_geterror(assoc->print)));
*msg = "Unknown Error";
assert(req && req->state == REQUEST_IDLE);
- if (req->request->which != Z_APDU_initRequest && !assoc->init)
+ if (req->apdu_request->which != Z_APDU_initRequest && !assoc->init)
{
*msg = "Missing InitRequest";
return -1;
}
- switch (req->request->which)
+ switch (req->apdu_request->which)
{
case Z_APDU_initRequest:
res = process_initRequest(assoc, req); break;
yaz_log(LOG_DEBUG, "backend_response");
assert(assoc && req && req->state != REQUEST_IDLE);
/* determine what it is we're waiting for */
- switch (req->request->which)
+ switch (req->apdu_request->which)
{
case Z_APDU_searchRequest:
res = response_searchRequest(assoc, req, 0, &fd); break;
static Z_APDU *process_initRequest(association *assoc, request *reqb)
{
statserv_options_block *cb = statserv_getcontrol();
- Z_InitRequest *req = reqb->request->u.initRequest;
+ Z_InitRequest *req = reqb->apdu_request->u.initRequest;
Z_APDU *apdu = zget_APDU(assoc->encode, Z_APDU_initResponse);
Z_InitResponse *resp = apdu->u.initResponse;
bend_initresult *binitres;
*/
static Z_Records *diagrec(association *assoc, int error, char *addinfo)
{
- int oid[OID_SIZE];
Z_Records *rec = (Z_Records *)
odr_malloc (assoc->encode, sizeof(*rec));
- oident bib1;
int *err = odr_intdup(assoc->encode, error);
Z_DiagRec *drec = (Z_DiagRec *)
odr_malloc (assoc->encode, sizeof(*drec));
Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *)
odr_malloc (assoc->encode, sizeof(*dr));
- bib1.proto = assoc->proto;
- bib1.oclass = CLASS_DIAGSET;
- bib1.value = VAL_BIB1;
-
yaz_log(LOG_DEBUG, "Diagnostic: %d -- %s", error, addinfo ? addinfo :
"NULL");
rec->which = Z_Records_NSD;
drec->u.defaultFormat = dr;
#endif
dr->diagnosticSetId =
- odr_oiddup (assoc->encode, oid_ent_to_oid(&bib1, oid));
+ yaz_oidval_to_z3950oid (assoc->encode, CLASS_DIAGSET, VAL_BIB1);
dr->condition = err;
set_addinfo (dr, addinfo, assoc->encode);
return rec;
static Z_NamePlusRecord *surrogatediagrec(association *assoc, char *dbname,
int error, char *addinfo)
{
- int oid[OID_SIZE];
Z_NamePlusRecord *rec = (Z_NamePlusRecord *)
odr_malloc (assoc->encode, sizeof(*rec));
int *err = odr_intdup(assoc->encode, error);
- oident bib1;
Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (assoc->encode, sizeof(*drec));
Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *)
odr_malloc (assoc->encode, sizeof(*dr));
- bib1.proto = assoc->proto;
- bib1.oclass = CLASS_DIAGSET;
- bib1.value = VAL_BIB1;
-
yaz_log(LOG_DEBUG, "SurrogateDiagnotic: %d -- %s", error, addinfo);
rec->databaseName = dbname;
rec->which = Z_NamePlusRecord_surrogateDiagnostic;
rec->u.surrogateDiagnostic = drec;
drec->which = Z_DiagRec_defaultFormat;
drec->u.defaultFormat = dr;
- dr->diagnosticSetId = odr_oiddup (assoc->encode,
- oid_ent_to_oid(&bib1, oid));
+ dr->diagnosticSetId =
+ yaz_oidval_to_z3950oid (assoc->encode, CLASS_DIAGSET, VAL_BIB1);
dr->condition = err;
set_addinfo (dr, addinfo, assoc->encode);
*/
static Z_DiagRecs *diagrecs(association *assoc, int error, char *addinfo)
{
- int oid[OID_SIZE];
Z_DiagRecs *recs = (Z_DiagRecs *)odr_malloc (assoc->encode, sizeof(*recs));
int *err = odr_intdup(assoc->encode, error);
- oident bib1;
Z_DiagRec **recp = (Z_DiagRec **)odr_malloc (assoc->encode, sizeof(*recp));
Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (assoc->encode, sizeof(*drec));
- Z_DefaultDiagFormat *rec = (Z_DefaultDiagFormat *)odr_malloc (assoc->encode, sizeof(*rec));
+ Z_DefaultDiagFormat *rec = (Z_DefaultDiagFormat *)
+ odr_malloc (assoc->encode, sizeof(*rec));
yaz_log(LOG_DEBUG, "DiagRecs: %d -- %s", error, addinfo ? addinfo : "");
- bib1.proto = assoc->proto;
- bib1.oclass = CLASS_DIAGSET;
- bib1.value = VAL_BIB1;
recs->num_diagRecs = 1;
recs->diagRecs = recp;
drec->which = Z_DiagRec_defaultFormat;
drec->u.defaultFormat = rec;
- rec->diagnosticSetId = odr_oiddup (assoc->encode,
- oid_ent_to_oid(&bib1, oid));
+ rec->diagnosticSetId =
+ yaz_oidval_to_z3950oid (assoc->encode, CLASS_DIAGSET, VAL_BIB1);
rec->condition = err;
#ifdef ASN_COMPILED
static Z_APDU *process_searchRequest(association *assoc, request *reqb,
int *fd)
{
- Z_SearchRequest *req = reqb->request->u.searchRequest;
+ Z_SearchRequest *req = reqb->apdu_request->u.searchRequest;
bend_search_rr *bsrr =
(bend_search_rr *)nmem_malloc (reqb->request_mem, sizeof(*bsrr));
static Z_APDU *response_searchRequest(association *assoc, request *reqb,
bend_search_rr *bsrt, int *fd)
{
- Z_SearchRequest *req = reqb->request->u.searchRequest;
+ Z_SearchRequest *req = reqb->apdu_request->u.searchRequest;
Z_APDU *apdu = (Z_APDU *)odr_malloc (assoc->encode, sizeof(*apdu));
Z_SearchResponse *resp = (Z_SearchResponse *)
odr_malloc (assoc->encode, sizeof(*resp));
static Z_APDU *process_presentRequest(association *assoc, request *reqb,
int *fd)
{
- Z_PresentRequest *req = reqb->request->u.presentRequest;
+ Z_PresentRequest *req = reqb->apdu_request->u.presentRequest;
oident *prefformat;
oid_value form;
Z_APDU *apdu;
*/
static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd)
{
- Z_ScanRequest *req = reqb->request->u.scanRequest;
+ Z_ScanRequest *req = reqb->apdu_request->u.scanRequest;
Z_APDU *apdu = (Z_APDU *)odr_malloc (assoc->encode, sizeof(*apdu));
Z_ScanResponse *res = (Z_ScanResponse *)
odr_malloc (assoc->encode, sizeof(*res));
static Z_APDU *process_sortRequest(association *assoc, request *reqb,
int *fd)
{
- Z_SortRequest *req = reqb->request->u.sortRequest;
+ Z_SortRequest *req = reqb->apdu_request->u.sortRequest;
Z_SortResponse *res = (Z_SortResponse *)
odr_malloc (assoc->encode, sizeof(*res));
bend_sort_rr *bsrr = (bend_sort_rr *)
static Z_APDU *process_deleteRequest(association *assoc, request *reqb,
int *fd)
{
- Z_DeleteResultSetRequest *req = reqb->request->u.deleteResultSetRequest;
+ Z_DeleteResultSetRequest *req =
+ reqb->apdu_request->u.deleteResultSetRequest;
Z_DeleteResultSetResponse *res = (Z_DeleteResultSetResponse *)
odr_malloc (assoc->encode, sizeof(*res));
bend_delete_rr *bdrr = (bend_delete_rr *)
static void process_close(association *assoc, request *reqb)
{
- Z_Close *req = reqb->request->u.close;
+ Z_Close *req = reqb->apdu_request->u.close;
static char *reasons[] =
{
"finished",
{
bend_segment_rr request;
- request.segment = reqb->request->u.segmentRequest;
+ request.segment = reqb->apdu_request->u.segmentRequest;
request.stream = assoc->encode;
request.decode = assoc->decode;
request.print = assoc->print;
{
bend_esrequest_rr esrequest;
- Z_ExtendedServicesRequest *req = reqb->request->u.extendedServicesRequest;
+ Z_ExtendedServicesRequest *req = reqb->apdu_request->u.extendedServicesRequest;
Z_APDU *apdu = zget_APDU(assoc->encode, Z_APDU_extendedServicesResponse);
Z_ExtendedServicesResponse *resp = apdu->u.extendedServicesResponse;
yaz_log(LOG_DEBUG,"inside Process esRequest");
- esrequest.esr = reqb->request->u.extendedServicesRequest;
+ esrequest.esr = reqb->apdu_request->u.extendedServicesRequest;
esrequest.stream = assoc->encode;
esrequest.decode = assoc->decode;
esrequest.print = assoc->print;