]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: WURFL: wurfl_get() and wurfl_get_all() now return an empty string if device...
authormbellomi <massimiliano@scientiamobile.com>
Tue, 21 May 2019 14:41:24 +0000 (16:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 22 May 2019 10:06:38 +0000 (12:06 +0200)
src/wurfl.c

index e7256d9b9db38afc24700faeb4c06f7e38ccb724..ae3d2fc00990920a345a7366d13264a153984a16 100644 (file)
@@ -433,14 +433,14 @@ static int ha_wurfl_get_all(const struct arg *args, struct sample *smp, const ch
        wh.wsmp = smp;
        dHandle = wurfl_lookup(global_wurfl.handle, &ha_wurfl_retrieve_header, &wh);
 
+       temp = get_trash_chunk();
+       chunk_reset(temp);
+
        if (!dHandle) {
                ha_wurfl_log("WURFL: unable to retrieve device from request %s\n", wurfl_get_error_message(global_wurfl.handle));
-               return 1;
+               goto wurfl_get_all_completed;
        }
 
-       temp = get_trash_chunk();
-       chunk_reset(temp);
-
        list_for_each_entry(wi, &global_wurfl.information_list, list) {
 
                switch(wi->data.type) {
@@ -481,6 +481,8 @@ static int ha_wurfl_get_all(const struct arg *args, struct sample *smp, const ch
                chunk_appendf(temp, "%c", global_wurfl.information_list_separator);
        }
 
+wurfl_get_all_completed:
+
        wurfl_device_destroy(dHandle);
        smp->data.u.str.area = temp->area;
        smp->data.u.str.data = temp->data;
@@ -507,14 +509,14 @@ static int ha_wurfl_get(const struct arg *args, struct sample *smp, const char *
        wh.wsmp = smp;
        dHandle = wurfl_lookup(global_wurfl.handle, &ha_wurfl_retrieve_header, &wh);
 
+       temp = get_trash_chunk();
+       chunk_reset(temp);
+
        if (!dHandle) {
                ha_wurfl_log("WURFL: unable to retrieve device from request %s\n", wurfl_get_error_message(global_wurfl.handle));
-               return 1;
+               goto wurfl_get_completed;
        }
 
-       temp = get_trash_chunk();
-       chunk_reset(temp);
-
        while (args[i].data.str.area) {
                node = ebst_lookup(&global_wurfl.btree, args[i].data.str.area);
 
@@ -567,6 +569,8 @@ static int ha_wurfl_get(const struct arg *args, struct sample *smp, const char *
                i++;
        }
 
+wurfl_get_completed:
+
        wurfl_device_destroy(dHandle);
        smp->data.u.str.area = temp->area;
        smp->data.u.str.data = temp->data;