]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Use controller port by default when connecting to local IP
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Feb 2018 14:37:27 +0000 (14:37 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 23 Feb 2018 14:37:27 +0000 (14:37 +0000)
src/client/rspamc.c

index bcc302f952ddd40fecd8365f3af3dded15778261..ff5f23819ead105a800a66954956edf84911f54b 100644 (file)
@@ -1594,13 +1594,6 @@ rspamc_process_input (struct event_base *ev_base, struct rspamc_command *cmd,
 
        p = strrchr (p, ':');
 
-       if (p != NULL) {
-               port = strtoul (p + 1, NULL, 10);
-       }
-       else {
-               port = cmd->is_controller ? DEFAULT_CONTROL_PORT : DEFAULT_PORT;
-       }
-
        if (!hostbuf) {
                if (p != NULL) {
                        hostbuf = g_malloc (p - connect_str + 1);
@@ -1611,6 +1604,27 @@ rspamc_process_input (struct event_base *ev_base, struct rspamc_command *cmd,
                }
        }
 
+       if (p != NULL) {
+               port = strtoul (p + 1, NULL, 10);
+       }
+       else {
+               /*
+                * If we connect to localhost, 127.0.0.1 or ::1, then try controller
+                * port first
+                */
+
+               if (strcmp (hostbuf, "localhost") == 0 ||
+                               strcmp (hostbuf, "127.0.0.1") == 0 ||
+                               strcmp (hostbuf, "::1") == 0 ||
+                               strcmp (hostbuf, "[::1]") == 0) {
+                       port = DEFAULT_CONTROL_PORT;
+               }
+               else {
+                       port = cmd->is_controller ? DEFAULT_CONTROL_PORT : DEFAULT_PORT;
+               }
+
+       }
+
        conn = rspamd_client_init (ev_base, hostbuf, port, timeout, key);
 
        if (conn != NULL) {