static void tls_policy_lookup(SMTP_SESSION *session, int *site_level, const char *site_name, const char *site_class) { /* * Only one lookup with [nexthop]:port, [nexthop] or nexthop:port These * are never the domain part of localpart@domain, rather they are * explicit nexthops from transport:nexthop, and match only the * corresponding policy. Parent domain matching (below) applies only to * sub-domains of the recipient domain. */ if (!valid_hostname(site_name, DONT_GRIPE)) { tls_policy_lookup_one(session, site_level, site_name, site_class); return; } /* * XXX For clarity consider using ``do { .. } while'', instead of using * ``while { .. }'' with loop control at the bottom. */ while (1) { /* Try the given domain */ if (tls_policy_lookup_one(session, site_level, site_name, site_class)) return; /* Re-try with parent domain */ if ((site_name = strchr(site_name + 1, '.')) == 0) return; } }
static void tls_policy_lookup(SMTP_TLS_POLICY *tls, int *site_level, const char *site_name, const char *site_class) { /* * Only one lookup with [nexthop]:port, [nexthop] or nexthop:port These * are never the domain part of localpart@domain, rather they are * explicit nexthops from transport:nexthop, and match only the * corresponding policy. Parent domain matching (below) applies only to * sub-domains of the recipient domain. * * XXX UNIX-domain connections query with the pathname as destination. */ if (!valid_hostname(site_name, DONT_GRIPE)) { tls_policy_lookup_one(tls, site_level, site_name, site_class); return; } do { tls_policy_lookup_one(tls, site_level, site_name, site_class); } while (*site_level == TLS_LEV_NOTFOUND && (site_name = strchr(site_name + 1, '.')) != 0); }