From: mbellomi Date: Tue, 21 May 2019 14:41:24 +0000 (+0200) Subject: MINOR: WURFL: wurfl_get() and wurfl_get_all() now return an empty string if device... X-Git-Tag: v2.0-dev4~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9896981675bdb9cddc0cb37a389909a0b92ddefc;p=thirdparty%2Fhaproxy.git MINOR: WURFL: wurfl_get() and wurfl_get_all() now return an empty string if device detection fails --- diff --git a/src/wurfl.c b/src/wurfl.c index e7256d9b9d..ae3d2fc009 100644 --- a/src/wurfl.c +++ b/src/wurfl.c @@ -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;