]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: 51d: unable to start haproxy without "51degrees-data-file"
authorDragan Dosen <ddosen@haproxy.com>
Fri, 7 Aug 2015 14:41:23 +0000 (16:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Sat, 8 Aug 2015 10:15:55 +0000 (12:15 +0200)
This patch adds a few checks on "global._51degrees.data_file_path" and allows
haproxy to start even when the pattern or trie data file is not specified.

If the "51d" converter is used, a new function "_51d_conv_check" will check
"global._51degrees.data_file_path" and displays a warning if necessary.

In src/haproxy.c, the global 51Degrees "cache_size" has moved outside of the
FIFTYONEDEGREES_H_PATTERN_INCLUDED ifdef block.

src/51d.c
src/haproxy.c

index 6f17c28b8479b0edeab48387a3a3e679666909fd..407308a97f2dab7fb7ea763c813cdc3892a99126 100644 (file)
--- a/src/51d.c
+++ b/src/51d.c
@@ -104,6 +104,16 @@ static int _51d_cache_size(char **args, int section_type, struct proxy *curpx,
        return 0;
 }
 
+static int _51d_conv_check(struct arg *arg, struct sample_conv *conv,
+                           const char *file, int line, char **err)
+{
+       if (global._51degrees.data_file_path)
+               return 1;
+
+       memprintf(err, "51Degrees data file is not specified (parameter '51degrees-data-file')");
+       return 0;
+}
+
 static int _51d_conv(const struct arg *args, struct sample *smp, void *private)
 {
        int i;
@@ -218,6 +228,9 @@ int init_51degrees(void)
        char **_51d_property_list = NULL;
        fiftyoneDegreesDataSetInitStatus _51d_dataset_status = DATA_SET_INIT_STATUS_NOT_SET;
 
+       if (!global._51degrees.data_file_path)
+               return -1;
+
        if (!LIST_ISEMPTY(&global._51degrees.property_names)) {
                i = 0;
                list_for_each_entry(name, &global._51degrees.property_names, list)
@@ -314,7 +327,7 @@ static struct cfg_kw_list _51dcfg_kws = {{ }, {
 
 /* Note: must not be declared <const> as its list will be overwritten */
 static struct sample_conv_kw_list conv_kws = {ILH, {
-       { "51d", _51d_conv, ARG5(1,STR,STR,STR,STR,STR), NULL, SMP_T_STR, SMP_T_STR },
+       { "51d", _51d_conv, ARG5(1,STR,STR,STR,STR,STR), _51d_conv_check, SMP_T_STR, SMP_T_STR },
        { NULL, NULL, 0, 0, 0 },
 }};
 
index b0b25468f109e4aa8f6d5551c245f3da1b668241..b730ab14ac9ee1c170621649afca1ee7a194101e 100644 (file)
@@ -195,8 +195,8 @@ struct global global = {
                .data_file_path = NULL,
 #ifdef FIFTYONEDEGREES_H_PATTERN_INCLUDED
                .data_set = { },
-               .cache_size = 0,
 #endif
+               .cache_size = 0,
        },
 #endif
        /* others NULL OK */