diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2022-06-26 12:10:03 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2022-06-26 12:21:08 +0100 |
commit | 9f1a75f126ae217a3a3568b106c9133b3c5c413a (patch) | |
tree | 9a7ac8fe4c827c981b49946260ea0d1aa1e5524d /src/src/host.c | |
parent | 57318bfd2312ea561661906ca8001bd74a01b312 (diff) | |
parent | 89318c714454e11217505d2163d807d5d827f50a (diff) | |
download | exim4-9f1a75f126ae217a3a3568b106c9133b3c5c413a.tar.gz |
Merge branch '4.next'4.next
Diffstat (limited to 'src/src/host.c')
-rw-r--r-- | src/src/host.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/src/host.c b/src/src/host.c index e43b507e5..fed9f4b5f 100644 --- a/src/src/host.c +++ b/src/src/host.c @@ -363,80 +363,6 @@ while ((name = string_nextinlist(&list, &sep, NULL, 0))) } - - - -/************************************************* -* Extract port from address string * -*************************************************/ - -/* In the -oMa and -oMi options, a host plus port is given as an IP address -followed by a dot and a port number. This function decodes this. - -An alternative format for the -oMa and -oMi options is [ip address]:port which -is what Exim uses for output, because it seems to becoming commonly used, -whereas the dot form confuses some programs/people. So we recognize that form -too. - -The spool file used to use the first form, but this breaks with a v4mapped ipv6 -hybrid, because the parsing here is not clever. So for spool we now use the -second form. - -Argument: - address points to the string; if there is a port, the '.' in the string - is overwritten with zero to terminate the address; if the string - is in the [xxx]:ppp format, the address is shifted left and the - brackets are removed - -Returns: 0 if there is no port, else the port number. If there's a syntax - error, leave the incoming address alone, and return 0. -*/ - -int -host_address_extract_port(uschar *address) -{ -int port = 0; -uschar *endptr; - -/* Handle the "bracketed with colon on the end" format */ - -if (*address == '[') - { - uschar *rb = address + 1; - while (*rb != 0 && *rb != ']') rb++; - if (*rb++ == 0) return 0; /* Missing ]; leave invalid address */ - if (*rb == ':') - { - port = Ustrtol(rb + 1, &endptr, 10); - if (*endptr != 0) return 0; /* Invalid port; leave invalid address */ - } - else if (*rb != 0) return 0; /* Bad syntax; leave invalid address */ - memmove(address, address + 1, rb - address - 2); - rb[-2] = 0; - } - -/* Handle the "dot on the end" format */ - -else - { - int skip = -3; /* Skip 3 dots in IPv4 addresses */ - address--; - while (*(++address) != 0) - { - int ch = *address; - if (ch == ':') skip = 0; /* Skip 0 dots in IPv6 addresses */ - else if (ch == '.' && skip++ >= 0) break; - } - if (*address == 0) return 0; - port = Ustrtol(address + 1, &endptr, 10); - if (*endptr != 0) return 0; /* Invalid port; leave invalid address */ - *address = 0; - } - -return port; -} - - /************************************************* * Get port from a host item's name * *************************************************/ |