bumped version number.
[pazpar2-moved-to-github.git] / src / logic.c
index a1de748..a004da3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: logic.c,v 1.67 2007-10-02 07:50:12 adam Exp $
+/* $Id: logic.c,v 1.73 2007-12-22 17:10:37 adam Exp $
    Copyright (c) 2006-2007, Index Data.
 
    This file is part of Pazpar2.
@@ -82,20 +82,19 @@ struct parameters global_parameters =
     "",
     "", 
     0,
-    0, /* dump_records */
-    0, /* debug_mode */
-    30,
+    0,   // dump_records
+    0,   // debug_mode
+    30,  // operations timeout 
     "81",
     "Index Data PazPar2",
     VERSION,
-    600, // 10 minutes
-    60,
+    60,   // session timeout 
     100,
     MAX_CHUNK,
     0,
     0,
-    180,
-    15
+    180, // Z39.50 session timeout
+    15   // Connect timeout
 };
 
 // Recursively traverse query structure to extract terms.
@@ -526,7 +525,8 @@ static int prepare_session_database(struct session *se,
 }
 
 // called if watch should be removed because http_channel is to be destroyed
-static void session_watch_cancel(void *data, struct http_channel *c)
+static void session_watch_cancel(void *data, struct http_channel *c,
+                                 void *data2)
 {
     struct session_watchentry *ent = data;
 
@@ -554,9 +554,12 @@ void session_alert_watch(struct session *s, int what)
     if (s->watchlist[what].fun)
     {
         /* our watch is no longer associated with http_channel */
+        void *data;
+        session_watchfun fun;
+
         http_remove_observer(s->watchlist[what].obs);
-        session_watchfun fun = s->watchlist[what].fun;
-        void *data = s->watchlist[what].data;
+        fun = s->watchlist[what].fun;
+        data = s->watchlist[what].data;
 
         /* reset watch before fun is invoked - in case fun wants to set
            it again */
@@ -1075,11 +1078,16 @@ static struct record_metadata *record_metadata_init(
         rec_md->data.text.disp = nmem_strdup(nmem, p);
         rec_md->data.text.sort = 0;
     }
-    else if (type == Metadata_type_year)
+    else if (type == Metadata_type_year || type == Metadata_type_date)
     {
         int first, last;
-        if (extract7bit_years((char *) value, &first, &last) < 0)
+        int longdate = 0;
+
+        if (type == Metadata_type_date)
+            longdate = 1;
+        if (extract7bit_dates((char *) value, &first, &last, longdate) < 0)
             return 0;
+
         rec_md->data.number.min = first;
         rec_md->data.number.max = last;
     }
@@ -1261,6 +1269,12 @@ struct record *ingest_record(struct client *cl, Z_External *rec,
                          
                          cluster->sortkeys[sk_field_id]->text.disp = 
                              rec_md->data.text.disp;
+                         if (!sort_str)
+                         {
+                             sort_str = rec_md->data.text.disp;
+                             yaz_log(YLOG_WARN, 
+                                     "Could not make sortkey. Bug #1858");
+                         }
                          cluster->sortkeys[sk_field_id]->text.sort = 
                              nmem_strdup(se->nmem, sort_str);
 #if 0