]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10908: [mod_amqp] AMQP routing key (format_fields) formation broke and invalid...
authorBrian West <brian@freeswitch.org>
Tue, 16 Jan 2018 15:01:13 +0000 (09:01 -0600)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:39 +0000 (07:21 +0000)
src/mod/event_handlers/mod_amqp/mod_amqp_producer.c

index 940578b7cdc39fd893f9daed833b9cba5dc60770..305b366ddbe69980584499c739a621e7c0eeb86c 100644 (file)
@@ -249,23 +249,22 @@ switch_status_t mod_amqp_producer_create(char *name, switch_xml_t cfg)
                        } else if (!strncmp(var, "content-type", 12)) {
                                content_type = switch_core_strdup(profile->pool, val);
                        } else if (!strncmp(var, "format_fields", 13)) {
-                               char *tmp;
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "amqp format fields : %s\n", val);
-                               if ((format_fields_size = mod_amqp_count_chars(val, ',')) >= MAX_ROUTING_KEY_FORMAT_FIELDS) {
+                               char *tmp = switch_core_strdup(profile->pool, val);
+                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "amqp format fields : %s\n", tmp);
+                               if ((format_fields_size = mod_amqp_count_chars(tmp, ',')) >= MAX_ROUTING_KEY_FORMAT_FIELDS) {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "You can have only %d routing fields in the routing key.\n",
                                                                          MAX_ROUTING_KEY_FORMAT_FIELDS);
                                        goto err;
                                }
 
                                /* increment size because the count returned the number of separators, not number of fields */
-                               tmp = strdup(val);
                                format_fields_size++;
                                switch_separate_string(tmp, ',', format_fields, MAX_ROUTING_KEY_FORMAT_FIELDS);
                                format_fields[format_fields_size] = NULL;
-                               free(tmp);
                        } else if (!strncmp(var, "event_filter", 12)) {
+                               char *tmp = switch_core_strdup(profile->pool, val);
                                /* Parse new events */
-                               profile->event_subscriptions = switch_separate_string(val, ',', argv, (sizeof(argv) / sizeof(argv[0])));
+                               profile->event_subscriptions = switch_separate_string(tmp, ',', argv, (sizeof(argv) / sizeof(argv[0])));
 
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Found %d subscriptions\n", profile->event_subscriptions);
 
@@ -274,6 +273,7 @@ switch_status_t mod_amqp_producer_create(char *name, switch_xml_t cfg)
                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "The switch event %s was not recognised.\n", argv[arg]);
                                        }
                                }
+
                        }
                } /* params for loop */
        }
@@ -290,10 +290,12 @@ switch_status_t mod_amqp_producer_create(char *name, switch_xml_t cfg)
        for(i = 0; i < format_fields_size; i++) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "amqp routing key %d : %s\n", i, format_fields[i]);
                if(profile->enable_fallback_format_fields) {
-                       profile->format_fields[i].size = switch_separate_string(format_fields[i], '|', profile->format_fields[i].name, MAX_ROUTING_KEY_FORMAT_FALLBACK_FIELDS);
+                       profile->format_fields[i].size = switch_separate_string(format_fields[i], '|',
+                                                                                                                                       profile->format_fields[i].name, MAX_ROUTING_KEY_FORMAT_FALLBACK_FIELDS);
                        if(profile->format_fields[i].size > 1) {
                                for(arg = 0; arg < profile->format_fields[i].size; arg++) {
-                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "amqp routing key %d : sub key %d : %s\n", i, arg, profile->format_fields[i].name[arg]);
+                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
+                                                                         "amqp routing key %d : sub key %d : %s\n", i, arg, profile->format_fields[i].name[arg]);
                                }
                        }
                } else {