Fixed bug introduced by previous commit.
[yaz-moved-to-github.git] / server / seshigh.c
index 94c4d45..57389f2 100644 (file)
@@ -4,7 +4,21 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: seshigh.c,v $
- * Revision 1.65  1997-09-01 08:53:01  adam
+ * Revision 1.69  1997-09-30 11:48:12  adam
+ * Fixed bug introduced by previous commit.
+ *
+ * Revision 1.68  1997/09/29 13:18:59  adam
+ * Added function, oid_ent_to_oid, to replace the function
+ * oid_getoidbyent, which is not thread safe.
+ *
+ * Revision 1.67  1997/09/17 12:10:40  adam
+ * YAZ version 1.4.
+ *
+ * Revision 1.66  1997/09/05 15:26:44  adam
+ * Added ODR encode in search and scen bend request structures.
+ * Fixed a few enums that caused trouble with C++.
+ *
+ * Revision 1.65  1997/09/01 08:53:01  adam
  * New windows NT/95 port using MSV5.0. The test server 'ztest' was
  * moved a separate directory. MSV5.0 project server.dsp created.
  * As an option, the server can now operate as an NT service.
@@ -666,6 +680,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb)
     if (req->implementationVersion)
        logf(LOG_LOG, "Version:   %s", req->implementationVersion);
 
+    binitreq.stream = assoc->encode;
     binitreq.configname = "default-config";
     binitreq.auth = req->idAuthentication;
     if (!(binitres = bend_init(&binitreq)))
@@ -756,6 +771,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb)
  */
 static Z_Records *diagrec(association *assoc, int error, char *addinfo)
 {
+    int oid[OID_SIZE];
     Z_Records *rec = odr_malloc (assoc->encode, sizeof(*rec));
     oident bib1;
     int *err = odr_malloc (assoc->encode, sizeof(*err));
@@ -777,7 +793,8 @@ static Z_Records *diagrec(association *assoc, int error, char *addinfo)
 #else
     rec->u.nonSurrogateDiagnostic = dr;
 #endif
-    dr->diagnosticSetId = oid_getoidbyent(&bib1);
+    dr->diagnosticSetId = odr_oiddup (assoc->encode,
+                                      oid_ent_to_oid(&bib1, oid));
     dr->condition = err;
     dr->which = Z_DiagForm_v2AddInfo;
     dr->addinfo = addinfo ? addinfo : "";
@@ -790,6 +807,7 @@ static Z_Records *diagrec(association *assoc, int error, char *addinfo)
 static Z_NamePlusRecord *surrogatediagrec(association *assoc, char *dbname,
                                            int error, char *addinfo)
 {
+    int oid[OID_SIZE];
     Z_NamePlusRecord *rec = odr_malloc (assoc->encode, sizeof(*rec));
     int *err = odr_malloc (assoc->encode, sizeof(*err));
     oident bib1;
@@ -807,7 +825,8 @@ static Z_NamePlusRecord *surrogatediagrec(association *assoc, char *dbname,
     rec->u.surrogateDiagnostic = drec;
     drec->which = Z_DiagRec_defaultFormat;
     drec->u.defaultFormat = dr;
-    dr->diagnosticSetId = oid_getoidbyent(&bib1);
+    dr->diagnosticSetId = odr_oiddup (assoc->encode,
+                                      oid_ent_to_oid(&bib1, oid));
     dr->condition = err;
     dr->which = Z_DiagForm_v2AddInfo;
     dr->addinfo = addinfo ? addinfo : "";
@@ -819,6 +838,7 @@ static Z_NamePlusRecord *surrogatediagrec(association *assoc, char *dbname,
  */
 static Z_DiagRecs *diagrecs(association *assoc, int error, char *addinfo)
 {
+    int oid[OID_SIZE];
     Z_DiagRecs *recs = odr_malloc (assoc->encode, sizeof(*recs));
     int *err = odr_malloc (assoc->encode, sizeof(*err));
     oident bib1;
@@ -838,7 +858,8 @@ static Z_DiagRecs *diagrecs(association *assoc, int error, char *addinfo)
     drec->which = Z_DiagRec_defaultFormat;
     drec->u.defaultFormat = rec;
 
-    rec->diagnosticSetId = oid_getoidbyent(&bib1);
+    rec->diagnosticSetId = odr_oiddup (assoc->encode,
+                                      oid_ent_to_oid(&bib1, oid));
     rec->condition = err;
     rec->which = Z_DiagForm_v2AddInfo;
     rec->addinfo = addinfo ? addinfo : "";
@@ -849,6 +870,7 @@ static Z_Records *pack_records(association *a, char *setname, int start,
                                int *num, Z_RecordComposition *comp,
                                int *next, int *pres, oid_value format)
 {
+    int oid[OID_SIZE];
     int recno, total_length = 0, toget = *num, dumped_records = 0;
     Z_Records *records = odr_malloc (a->encode, sizeof(*records));
     Z_NamePlusRecordList *reclist = odr_malloc (a->encode, sizeof(*reclist));
@@ -952,7 +974,7 @@ static Z_Records *pack_records(association *a, char *setname, int start,
        recform.oclass = CLASS_RECSYN;
        recform.value = fres->format;
        thisext->direct_reference = odr_oiddup(a->encode,
-           oid_getoidbyent(&recform));
+                                              oid_ent_to_oid(&recform, oid));
        thisext->indirect_reference = 0;
        thisext->descriptor = 0;
        if (fres->len < 0) /* Structured data */
@@ -1024,6 +1046,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb,
     bsrq.num_bases = req->num_databaseNames;
     bsrq.basenames = req->databaseNames;
     bsrq.query = req->query;
+    bsrq.stream = assoc->encode;
 
     if (!(bsrt = bend_search(assoc->backend, &bsrq, fd)))
        return 0;
@@ -1244,6 +1267,7 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd)
        srq.basenames = req->databaseNames;
        srq.num_entries = *req->numberOfTermsRequested;
        srq.term = req->termListAndStartPoint;
+       srq.stream = assoc->encode;
        if (!(attset = oid_getentbyoid(req->attributeSet)) ||
            attset->oclass != CLASS_RECSYN)
            srq.attributeset = VAL_NONE;