diff --git a/main/dnsmgr.c b/main/dnsmgr.c index 23e1ab6..c7ff29e 100644 --- a/main/dnsmgr.c +++ b/main/dnsmgr.c @@ -131,6 +131,17 @@ int ast_dnsmgr_lookup(const char *name, struct ast_sockaddr *result, struct ast_ return 0; } + /* if it's actually an IP address and not a name, + there's no need for a managed lookup */ + if (AF_INET == result->ss.ss_family) { + struct sockaddr_in *ip_result = (struct sockaddr_in*)&result->ss; + if (inet_aton(name, &ip_result->sin_addr)) { + ip_result->sin_family = AF_INET; + result->len = sizeof(struct sockaddr_in); + return 0; + } + } + ast_verb(4, "doing dnsmgr_lookup for '%s'\n", name); /* do a lookup now but add a manager so it will automagically get updated in the background */