Client prevents "present request out of range".
[yaz-moved-to-github.git] / zoom / zoom-c.c
index fa38d1d..436fae9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: zoom-c.c,v 1.6 2001-11-15 08:58:29 adam Exp $
+ * $Id: zoom-c.c,v 1.8 2001-11-15 21:59:40 adam Exp $
  *
  * ZOOM layer for C, connections, result sets, queries.
  */
@@ -442,6 +442,12 @@ static void Z3950_resultset_retrieve (Z3950_resultset r,
     c = r->connection;
     if (!c)
        return;
+    if (start >= r->size)
+        return;
+
+    if (start + count > r->size)
+       count = r->size - start;
+
     task = Z3950_connection_add_task (c, Z3950_TASK_RETRIEVE);
     task->u.resultset = r;
     Z3950_resultset_addref (r);
@@ -1276,28 +1282,29 @@ static int do_write(Z3950_connection c)
     return do_write_ex (c, c->buf_out, c->len_out);
 }
 
-const char *Z3950_connection_option (Z3950_connection c, const char *key,
-                                    const char *val)
+
+const char *Z3950_connection_option_get (Z3950_connection c, const char *key)
 {
-    if (val)
-    {
-       Z3950_options_set (c->options, key, val);
-        return val;
-    }
     return Z3950_options_get (c->options, key);
 }
 
-const char *Z3950_resultset_option (Z3950_resultset r, const char *key,
-                                   const char *val)
+void Z3950_connection_option_set (Z3950_connection c, const char *key,
+                                  const char *val)
+{
+    Z3950_options_set (c->options, key, val);
+}
+
+const char *Z3950_resultset_option_get (Z3950_resultset r, const char *key)
 {
-    if (val)
-    {
-       Z3950_options_set (r->options, key, val);
-        return val;
-    }
     return Z3950_options_get (r->options, key);
 }
 
+void Z3950_resultset_option_set (Z3950_resultset r, const char *key,
+                                  const char *val)
+{
+    Z3950_options_set (r->options, key, val);
+}
+
 
 int Z3950_connection_errcode (Z3950_connection c)
 {