X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Finternet_addressing.c;h=97a641ceafabb3a78763b0075db0bebe241f34c1;hb=b79a17423c0f3dcaa13b31203c2e94b39697e847;hp=26b8720a35415d547eae1e4c27eece2075a2369a;hpb=cd965b7e2a4e76ebe30b4c3155920e97b1350109;p=citadel.git diff --git a/citadel/internet_addressing.c b/citadel/internet_addressing.c index 26b8720a3..97a641cea 100644 --- a/citadel/internet_addressing.c +++ b/citadel/internet_addressing.c @@ -295,6 +295,7 @@ int CtdlHostAlias(char *fqdn) { int i; char buf[256]; char host[256], type[256]; + int found = 0; if (fqdn == NULL) return(hostalias_nomatch); if (IsEmptyStr(fqdn)) return(hostalias_nomatch); @@ -309,18 +310,23 @@ int CtdlHostAlias(char *fqdn) { extract_token(host, buf, 0, '|', sizeof host); extract_token(type, buf, 1, '|', sizeof type); - if ( (!strcasecmp(type, "localhost")) - && (!strcasecmp(fqdn, host))) - return(hostalias_localhost); + found = 0; - if ( (!strcasecmp(type, "directory")) - && (!strcasecmp(fqdn, host))) - return(hostalias_directory); + /* Process these in a specific order, in case there are multiple matches. + * We want directory to override masq, for example. + */ - if ( (!strcasecmp(type, "masqdomain")) - && (!strcasecmp(fqdn, host))) - return(hostalias_masq); + if ( (!strcasecmp(type, "masqdomain")) && (!strcasecmp(fqdn, host))) { + found = hostalias_masq; + } + if ( (!strcasecmp(type, "localhost")) && (!strcasecmp(fqdn, host))) { + found = hostalias_localhost; + } + if ( (!strcasecmp(type, "directory")) && (!strcasecmp(fqdn, host))) { + found = hostalias_directory; + } + if (found) return(found); } return(hostalias_nomatch); @@ -892,14 +898,10 @@ void CtdlDirectoryInit(void) { void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) { char key[SIZ]; - CtdlLogPrintf(CTDL_DEBUG, "Dir: %s --> %s\n", - internet_addr, citadel_addr); if (IsDirectory(internet_addr, 0) == 0) return; - + CtdlLogPrintf(CTDL_DEBUG, "Dir: %s --> %s\n", internet_addr, citadel_addr); directory_key(key, internet_addr); - - cdb_store(CDB_DIRECTORY, key, strlen(key), - citadel_addr, strlen(citadel_addr)+1 ); + cdb_store(CDB_DIRECTORY, key, strlen(key), citadel_addr, strlen(citadel_addr)+1 ); }