Fix usermodes harder when they are set early during registration.
[ircu2.10.12-pk.git] / include / res.h
index 582e513f92f614b48ed64dfb5948730a0ce3af9f..0cfbeea5576ec639e6a74bee44c8bd0d00fe2cdc 100644 (file)
@@ -139,8 +139,9 @@ extern void gethost_byaddr(const struct irc_in_addr *addr, dns_callback_f callba
                                  || (ADDR)->in6_16[7] != (ADDR)->in6_16[0])
 /** Evaluate to non-zero if \a ADDR (of type struct irc_in_addr) is an IPv4 address. */
 #define irc_in_addr_is_ipv4(ADDR) (!(ADDR)->in6_16[0] && !(ADDR)->in6_16[1] && !(ADDR)->in6_16[2] \
-                                   && !(ADDR)->in6_16[3] && !(ADDR)->in6_16[4] && (ADDR)->in6_16[6] \
-                                   && (!(ADDR)->in6_16[5] || (ADDR)->in6_16[5] == 65535))
+                                   && !(ADDR)->in6_16[3] && !(ADDR)->in6_16[4] \
+                                   && ((!(ADDR)->in6_16[5] && (ADDR)->in6_16[6]) \
+                                       || (ADDR)->in6_16[5] == 65535))
 /** Evaluate to non-zero if \a A is a different IP than \a B. */
 #define irc_in_addr_cmp(A,B) (irc_in_addr_is_ipv4(A) ? ((A)->in6_16[6] != (B)->in6_16[6] \
                                   || (A)->in6_16[7] != (B)->in6_16[7] || !irc_in_addr_is_ipv4(B)) \