--- asterisk-1.8.7.1/channels/chan_gtalk.c 2011-08-22 12:41:24.000000000 -0700 +++ asterisk-1.8.7.1-srvres/channels/chan_gtalk.c 2011-12-05 14:18:38.000000000 -0800 @@ -1468,9 +1468,10 @@ struct gtalk_pvt *p = NULL, *tmp = NULL; struct aji_client *c = client->connection; struct gtalk_candidate *newcandidate = NULL; + struct ast_sockaddr *remoteaddr = NULL; iks *traversenodes = NULL, *receipt = NULL; char *from; - + char remote[256]; from = iks_find_attrib(pak->x,"to"); if (!from) { from = c->jid->full; @@ -1507,7 +1508,15 @@ ast_copy_string(newcandidate->ip, S_OR(iks_find_attrib(traversenodes, "address"), ""), sizeof(newcandidate->ip)); + + sprintf(remote,"%s:%s",newcandidate->ip,iks_find_attrib(traversenodes, "port")); + ast_sockaddr_resolve(&remoteaddr, remote, 0, AF_INET); + newcandidate->port = atoi(iks_find_attrib(traversenodes, "port")); + if(!strcasecmp(S_OR(iks_find_attrib(traversenodes, "protocol"), ""), "udp")){ + ast_debug(1, "Setting RTP request to %s\n", remote); + ast_rtp_instance_set_remote_address(p->rtp, remoteaddr); + } ast_copy_string(newcandidate->username, S_OR(iks_find_attrib(traversenodes, "username"), ""), sizeof(newcandidate->username));