yaz_poll: Allow num_fds == 0
[yaz-moved-to-github.git] / src / zoom-sru.c
index d47cf26..04aff43 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2012 Index Data
  * See the file LICENSE for details.
  */
 /**
@@ -320,10 +320,8 @@ static zoom_ret handle_srw_response(ZOOM_connection c,
             
             Z_NamePlusRecord *npr = (Z_NamePlusRecord *)
                 odr_malloc(c->odr_in, sizeof(Z_NamePlusRecord));
-            /*
-             * TODO This does not work with 0-based recordPositions.
-             * We will iterate over one twice
-             */
+
+            /* recordPosition is 1 based */
             if (res->records[i].recordPosition && 
                 *res->records[i].recordPosition > 0)
                 pos = *res->records[i].recordPosition - 1;
@@ -427,15 +425,15 @@ int ZOOM_handle_sru(ZOOM_connection c, Z_HTTP_Response *hres,
     {
         Z_SOAP *soap_package = 0;
         ODR o = c->odr_in;
-        Z_SOAP_Handler soap_handlers[2] = {
+        Z_SOAP_Handler soap_handlers[3] = {
             {YAZ_XMLNS_SRU_v1_1, 0, (Z_SOAP_fun) yaz_srw_codec},
+            {YAZ_XMLNS_SRU_v2_response, 0, (Z_SOAP_fun) yaz_srw_codec},
             {0, 0, 0}
         };
         ret = z_soap_codec(o, &soap_package,
                            &hres->content_buf, &hres->content_len,
                            soap_handlers);
-        if (!ret && soap_package->which == Z_SOAP_generic &&
-            soap_package->u.generic->no == 0)
+        if (!ret && soap_package->which == Z_SOAP_generic)
         {
             Z_SRW_PDU *sr = (Z_SRW_PDU*) soap_package->u.generic->p;