Zebra returns character encoding as part of init response even if
[idzebra-moved-to-github.git] / index / zebrasrv.c
index dbb44ad..25f2d27 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zebrasrv.c,v 1.13 2007-04-16 08:44:32 adam Exp $
+/* $Id: zebrasrv.c,v 1.16 2007-05-21 11:54:59 adam Exp $
    Copyright (C) 1995-2007
    Index Data ApS
 
@@ -85,6 +85,8 @@ bend_initresult *bend_init (bend_initrequest *q)
        return r;
     }
     r->handle = zh;
+
+    q->query_charset = odr_strdup(q->stream, zebra_get_encoding(zh));
     if (q->auth)
     {
        if (q->auth->which == Z_IdAuthentication_open)
@@ -113,7 +115,7 @@ bend_initresult *bend_init (bend_initrequest *q)
        r->errstring = user;
        return r;
     }
-    if (q->charneg_request) /* characater set and langauge negotiation? */
+    if (q->charneg_request) /* characater set and language negotiation? */
     {
         char **charsets = 0;
         int num_charsets;
@@ -123,11 +125,9 @@ bend_initresult *bend_init (bend_initrequest *q)
         int i;
         NMEM nmem = nmem_create();
 
-        yaz_log (YLOG_LOG, "character set and language negotiation");
-
-        yaz_get_proposal_charneg (nmem, q->charneg_request,
-                                  &charsets, &num_charsets,
-                                  &langs, &num_langs, &selected);
+        yaz_get_proposal_charneg(nmem, q->charneg_request,
+                                 &charsets, &num_charsets,
+                                 &langs, &num_langs, &selected);
         
         for (i = 0; i < num_charsets; i++)
         {
@@ -152,21 +152,21 @@ bend_initresult *bend_init (bend_initrequest *q)
             } else {
                 right_name = charsets[i];
             }
-            if (odr_set_charset (q->decode, "UTF-8", right_name) == 0)
+            if (odr_set_charset(q->decode, "UTF-8", right_name) == 0)
             {
-                yaz_log (YLOG_LOG, "charset %d %s (proper name %s): OK", i,
-                         charsets[i], right_name);
-                odr_set_charset (q->stream, right_name, "UTF-8");
+                yaz_log(YLOG_LOG, "charset %d %s (proper name %s): OK", i,
+                        charsets[i], right_name);
+                odr_set_charset(q->stream, right_name, "UTF-8");
                 if (selected)
                     zebra_record_encoding(zh, right_name);
                zebra_octet_term_encoding(zh, right_name);
                q->charneg_response =
-                   yaz_set_response_charneg (q->stream, charsets[i],
-                                              0, selected);
+                   yaz_set_response_charneg(q->stream, charsets[i],
+                                             0, selected);
                break;
             } else {
-                yaz_log (YLOG_LOG, "charset %d %s (proper name %s): unsupported", i,
-                         charsets[i], right_name);
+                yaz_log(YLOG_LOG, "charset %d %s (proper name %s): unsupported", i,
+                        charsets[i], right_name);
             }
         }
         nmem_destroy(nmem);
@@ -197,7 +197,8 @@ static void search_terms(ZebraHandle zh, bend_search_rr *r)
     r->search_info->list[0]->which = Z_OtherInfo_externallyDefinedInfo;
     ext = odr_malloc (r->stream, sizeof(*ext));
     r->search_info->list[0]->information.externallyDefinedInfo = ext;
-    ext->direct_reference = odr_oiddup(r->stream, yaz_oid_search_result_1());
+    ext->direct_reference = odr_oiddup(r->stream,
+                                       yaz_oid_userinfo_searchresult_1);
     ext->indirect_reference = 0;
     ext->descriptor = 0;
     ext->which = Z_External_searchResult1;
@@ -398,7 +399,6 @@ void bend_close (void *handle)
 {
     zebra_close ((ZebraHandle) handle);
     xmalloc_trav("bend_close");
-    nmem_print_list();
 }
 
 int bend_sort (void *handle, bend_sort_rr *rr)