--- asterisk-trunk.orig/channels/chan_sip.c 2009-06-25 14:31:52.041767553 +0200 +++ asterisk-trunk/channels/chan_sip.c 2009-06-25 14:34:35.964266466 +0200 @@ -11396,6 +11396,7 @@ char tmp[80]; char addr[80]; struct sip_pvt *p; + struct sip_peer *peer; int res; char *fromdomain; char *domainport = NULL; @@ -11410,8 +11411,9 @@ if (r->dnsmgr == NULL) { char transport[MAXHOSTNAMELEN]; + peer = find_peer(r->hostname, NULL, TRUE, FINDPEERS, FALSE); snprintf(transport, sizeof(transport), "_sip._%s", get_transport(r->transport)); /* have to use static get_transport function */ - ast_dnsmgr_lookup(r->hostname, &r->us, &r->dnsmgr, sip_cfg.srvlookup ? transport : NULL); + ast_dnsmgr_lookup(peer ? peer->tohost : r->hostname, &r->us, &r->dnsmgr, sip_cfg.srvlookup ? transport : NULL); } if (r->call) { /* We have a registration */