while (isxdigit(*str)) str++;
if (*str) str++;
+ // ian: added this to get beyond ::
+ if (*str && !isxdigit(*str)) str++;
}
- if (seg != 8) FATAL("Malformed IPv6 address (don't abbreviate).");
+ // iank: commented. exim abbreviates but its consistent. and ip addr is only used
+ // to identify host, some misplaced leading zeros will not end up making 2
+ // ipv6 addresses from the internet be the same in practice.
+ //if (seg != 8) FATAL("Malformed IPv6 address (don't abbreviate).");
}