X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Faddrsbr.c;h=79d7afe4c467dd1e075934d4c1a256f70e31a5a6;hp=484ec5ef64572c8c6c4f9789aacd429a2241ab2f;hb=f6aa95b724fd8c791164abe7ee5468bf5c34f226;hpb=128545e06224233b7e91fc4c83f8830252fe16c9 diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index 484ec5e..79d7afe 100644 --- a/sbr/addrsbr.c +++ b/sbr/addrsbr.c @@ -526,3 +526,51 @@ local_test: ; return 0; } + + +/* + * Moved from hosts.c -- find out the official name of a host + */ + +/* + * In the SendMail world, we really don't know what the valid + * hosts are. We could poke around in the sendmail.cf file, but + * that still isn't a guarantee. As a result, we'll say that + * everything is a valid host, and let SendMail worry about it. + */ + +#include +#include + + +char * +OfficialName (char *name) +{ + unsigned char *p; + char *q, site[BUFSIZ]; + struct addrinfo hints, *res; + + static char buffer[BUFSIZ]; + + for (p = name, q = site; *p && (q - site < sizeof(site) - 1); p++, q++) + *q = isupper (*p) ? tolower (*p) : *p; + *q = '\0'; + q = site; + + if (!mh_strcasecmp (LocalName(), site)) + return LocalName(); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME; + hints.ai_family = PF_UNSPEC; + + if (getaddrinfo(q, NULL, &hints, &res) == 0) { + strncpy (buffer, res->ai_canonname, sizeof(buffer)); + buffer[sizeof(buffer) - 1] = '\0'; + freeaddrinfo(res); + return buffer; + } + + strncpy (buffer, site, sizeof(buffer)); + return buffer; +}