Avoid session memory for client sort stuff
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Oct 2012 19:21:33 +0000 (21:21 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 10 Oct 2012 19:21:33 +0000 (21:21 +0200)
The session mem gets reset and results in sort_strategy and sort_critiera
being corrupted - to empty strings or even vialation.

src/client.c
test/test_url_18.res

index 189bb61..426b289 100644 (file)
@@ -969,6 +969,8 @@ int client_destroy(struct client *c)
             xfree(c->addinfo);
             c->addinfo = 0;
             xfree(c->id);
+            xfree(c->sort_strategy);
+            xfree(c->sort_criteria);
             assert(!c->connection);
             facet_limits_destroy(c->facet_limits);
 
@@ -1369,7 +1371,6 @@ int client_parse_query(struct client *cl, const char *query,
 
 int client_parse_sort(struct client *cl, struct reclist_sortparms *sp)
 {
-    struct session *se = client_get_session(cl);
     if (sp)
     {
         const char *sort_strategy_and_spec =
@@ -1396,18 +1397,24 @@ int client_parse_sort(struct client *cl, struct reclist_sortparms *sp)
                 if (!cl->sort_criteria || strcmp(cl->sort_criteria, p))
                     cl->same_search = 0;
                 if (cl->same_search == 0) {
-                    cl->sort_strategy  = nmem_strdup(se->nmem, strategy);
-                    cl->sort_criteria = nmem_strdup(se->nmem, p);
+                    xfree(cl->sort_strategy);
+                    cl->sort_strategy = xstrdup(strategy);
+                    xfree(cl->sort_criteria);
+                    cl->sort_criteria = xstrdup(p);
                 }
             }
             else {
                 yaz_log(YLOG_LOG, "Client %s: Invalid sort strategy and spec found %s", client_get_id(cl), sort_strategy_and_spec);
+                xfree(cl->sort_strategy);
                 cl->sort_strategy  = 0;
+                xfree(cl->sort_criteria);
                 cl->sort_criteria = 0;
             }
         } else {
             yaz_log(YLOG_LOG, "Client %s: No sort strategy and spec found.", client_get_id(cl));
+            xfree(cl->sort_strategy);
             cl->sort_strategy  = 0;
+            xfree(cl->sort_criteria);
             cl->sort_criteria = 0;
         }
 
index dbd671c..9af6f33 100644 (file)
@@ -6,10 +6,34 @@
 <start>0</start>
 <num>10</num>
 <hit>
+ <md-title>STATEWIDE PLANNING</md-title>
+ <md-description>This data set contains:  1970 digitized land use maps, 1970 digitized zoning maps, active agricultural areas maps (1979-1980), maps displaying current National Flood Insurance Program data, locational guide map of the State Policies Plan for Conservation and Development of Connecticut (1987-1992), 1970 land use statistical data and 1970 municipal zoning data, proposed sewer service areas maps (1978) - DEP has update of this information, water conservation handbooks, and various reports and maps of the areawide Waste Treatment Management Planning Program (208)</md-description>
+ <location id="my"
+    name="marcserver" checksum="3602387">
+  <md-title>STATEWIDE PLANNING</md-title>
+  <md-description tag="520">This data set contains:  1970 digitized land use maps, 1970 digitized zoning maps, active agricultural areas maps (1979-1980), maps displaying current National Flood Insurance Program data, locational guide map of the State Policies Plan for Conservation and Development of Connecticut (1987-1992), 1970 land use statistical data and 1970 municipal zoning data, proposed sewer service areas maps (1978) - DEP has update of this information, water conservation handbooks, and various reports and maps of the areawide Waste Treatment Management Planning Program (208)</md-description>
+  <md-description tag="513">1960-PRESENT</md-description>
+ </location>
+ <count>1</count>
+ <recid>content: title statewide planning author medium book</recid>
+</hit>
+<hit>
+ <md-title>WATER WELL DATA</md-title>
+ <md-description>This database contains the following information on water wells in Nevada: driller&apos;s name, owner&apos;s name, location, formations encountered, lithologic descriptions, water level, and water quality</md-description>
+ <location id="my"
+    name="marcserver" checksum="64172">
+  <md-title>WATER WELL DATA</md-title>
+  <md-description tag="520">This database contains the following information on water wells in Nevada: driller&apos;s name, owner&apos;s name, location, formations encountered, lithologic descriptions, water level, and water quality</md-description>
+  <md-description tag="513">1930-PRESENT</md-description>
+ </location>
+ <count>1</count>
+ <recid>content: title water well data author medium book</recid>
+</hit>
+<hit>
  <md-title>UTAH GEOLOGICAL AND MINERAL SURVEY PUBLICATIONS</md-title>
  <md-description>Publications of the Utah Geological and Mineral Survey include reports of investigation, special studies, bulletins, open-file reports, geologic map of Utah, publications of geological societies, geologic and oil and mineral maps, coal monographs, circulars, water resource bulletins, and reprints of articles</md-description>
  <location id="my"
-    name="marcserver" checksum="3602387">
+    name="marcserver" checksum="4291493253">
   <md-title>UTAH GEOLOGICAL AND MINERAL SURVEY PUBLICATIONS</md-title>
   <md-description tag="520">Publications of the Utah Geological and Mineral Survey include reports of investigation, special studies, bulletins, open-file reports, geologic map of Utah, publications of geological societies, geologic and oil and mineral maps, coal monographs, circulars, water resource bulletins, and reprints of articles</md-description>
   <md-description tag="513">-PRESENT</md-description>
@@ -21,7 +45,7 @@
  <md-title>COAL SAMPLE BANK</md-title>
  <md-description>This data set contains methane data, chemical analysis data, and petrographic analysis data on core samples in Utah</md-description>
  <location id="my"
-    name="marcserver" checksum="64172">
+    name="marcserver" checksum="4287955038">
   <md-title>COAL SAMPLE BANK</md-title>
   <md-description tag="520">This data set contains methane data, chemical analysis data, and petrographic analysis data on core samples in Utah</md-description>
   <md-description tag="513">-PRESENT</md-description>
@@ -33,7 +57,7 @@
  <md-title>FRESH WATER WETLANDS MAPS</md-title>
  <md-description>Contained are a series of 1:50,000 scale maps showing regulated and unregulated fresh water wetlands in the organized territories.  Included is a table describing each mapped wetland</md-description>
  <location id="my"
-    name="marcserver" checksum="4291493253">
+    name="marcserver" checksum="4284416823">
   <md-title>FRESH WATER WETLANDS MAPS</md-title>
   <md-description tag="520">Contained are a series of 1:50,000 scale maps showing regulated and unregulated fresh water wetlands in the organized territories.  Included is a table describing each mapped wetland</md-description>
  </location>
@@ -44,7 +68,7 @@
  <md-title>MAINE GEOLOGICAL SURVEY BEDROCK WATER WELL INVENTORY</md-title>
  <md-description>This data set contains a series of well inventory maps stored on tape.  The series has no indexing</md-description>
  <location id="my"
-    name="marcserver" checksum="4287955038">
+    name="marcserver" checksum="4280878608">
   <md-title>MAINE GEOLOGICAL SURVEY BEDROCK WATER WELL INVENTORY</md-title>
   <md-description tag="520">This data set contains a series of well inventory maps stored on tape.  The series has no indexing</md-description>
   <md-description tag="513">1972-PRESENT</md-description>
  <recid>content: title maine geological survey bedrock water well inventory author medium book</recid>
 </hit>
 <hit>
- <md-title>WATER WELL DATA</md-title>
- <md-description>This database contains the following information on water wells in Nevada: driller&apos;s name, owner&apos;s name, location, formations encountered, lithologic descriptions, water level, and water quality</md-description>
- <location id="my"
-    name="marcserver" checksum="4284416823">
-  <md-title>WATER WELL DATA</md-title>
-  <md-description tag="520">This database contains the following information on water wells in Nevada: driller&apos;s name, owner&apos;s name, location, formations encountered, lithologic descriptions, water level, and water quality</md-description>
-  <md-description tag="513">1930-PRESENT</md-description>
- </location>
- <count>1</count>
- <recid>content: title water well data author medium book</recid>
-</hit>
-<hit>
- <md-title>STATEWIDE PLANNING</md-title>
- <md-description>This data set contains:  1970 digitized land use maps, 1970 digitized zoning maps, active agricultural areas maps (1979-1980), maps displaying current National Flood Insurance Program data, locational guide map of the State Policies Plan for Conservation and Development of Connecticut (1987-1992), 1970 land use statistical data and 1970 municipal zoning data, proposed sewer service areas maps (1978) - DEP has update of this information, water conservation handbooks, and various reports and maps of the areawide Waste Treatment Management Planning Program (208)</md-description>
- <location id="my"
-    name="marcserver" checksum="4280878608">
-  <md-title>STATEWIDE PLANNING</md-title>
-  <md-description tag="520">This data set contains:  1970 digitized land use maps, 1970 digitized zoning maps, active agricultural areas maps (1979-1980), maps displaying current National Flood Insurance Program data, locational guide map of the State Policies Plan for Conservation and Development of Connecticut (1987-1992), 1970 land use statistical data and 1970 municipal zoning data, proposed sewer service areas maps (1978) - DEP has update of this information, water conservation handbooks, and various reports and maps of the areawide Waste Treatment Management Planning Program (208)</md-description>
-  <md-description tag="513">1960-PRESENT</md-description>
- </location>
- <count>1</count>
- <recid>content: title statewide planning author medium book</recid>
-</hit>
-<hit>
  <md-title>INLAND WETLANDS OF CONNECTICUT</md-title>
  <md-description>This data set contains inland wetlands, as defined by State statute, which are delineated at a scale of 1:12,000, based predominantly on location of wet soils</md-description>
  <location id="my"