MINOR: threads: Don't start when device a detection module is used

For now, we don't know if device detection modules (51degrees, deviceatlas and
wurfl) are thread-safe or not. So HAproxy exits with an error when you try to
use one of them with nbthread greater than 1.

We will ask to maintainers of these modules to make them thread-safe or to give
us hints to do so.
diff --git a/src/51d.c b/src/51d.c
index 1f1a5f9..baeb2c2 100644
--- a/src/51d.c
+++ b/src/51d.c
@@ -547,6 +547,11 @@
 	if (!global_51degrees.data_file_path)
 		return 0;
 
+	if (global.nbthread > 1) {
+		Alert("51Degrees: multithreading is not supported for now.\n");
+		return (ERR_FATAL | ERR_ALERT);
+	}
+
 	if (!LIST_ISEMPTY(&global_51degrees.property_names)) {
 		i = 0;
 		list_for_each_entry(name, &global_51degrees.property_names, list)
diff --git a/src/da.c b/src/da.c
index 856ef0d..c31855d 100644
--- a/src/da.c
+++ b/src/da.c
@@ -121,6 +121,12 @@
 		size_t atlasimglen;
 		da_status_t status;
 
+		if (global.nbthread > 1) {
+			Alert("deviceatlas: multithreading is not supported for now.\n");
+			err_code |= ERR_ALERT | ERR_FATAL;
+			goto out;
+		}
+
 		jsonp = fopen(global_deviceatlas.jsonpath, "r");
 		if (jsonp == 0) {
 			Alert("deviceatlas : '%s' json file has invalid path or is not readable.\n",
diff --git a/src/wurfl.c b/src/wurfl.c
index 5bd9a0c..0349a50 100644
--- a/src/wurfl.c
+++ b/src/wurfl.c
@@ -313,6 +313,11 @@
 		return ERR_WARN;
 	}
 
+	if (global.nbthread > 1) {
+		Alert("WURFL: multithreading is not supported for now.\n");
+		return (ERR_FATAL | ERR_ALERT);
+	}
+
 	if (wurfl_set_root(global_wurfl.handle, global_wurfl.data_file) != WURFL_OK) {
 		Warning("WURFL: Engine setting root file failed - %s\n", wurfl_get_error_message(global_wurfl.handle));
 		send_log(NULL, LOG_WARNING, "WURFL: Engine setting root file failed - %s\n", wurfl_get_error_message(global_wurfl.handle));