From 8e51e99933a13b4740e53ee538b69290b6aa8017 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Wed, 17 Feb 2016 19:28:23 +0000 Subject: [PATCH] Choses best reply socket now. FossilOrigin-Name: 842fac75485981afcd5d6c637155df9551bbf2de5af3d9e621ac5471b8cf686c --- src/ac/wtpman.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ac/wtpman.c b/src/ac/wtpman.c index d3f491fd..44230eff 100644 --- a/src/ac/wtpman.c +++ b/src/ac/wtpman.c @@ -493,10 +493,13 @@ struct wtpman *wtpman_create(int socklistindex, struct sockaddr *srcaddr) int replyfd; - if (srcaddr->sa_family == AF_INET - && socklist[socklistindex].type != SOCKLIST_UNICAST_SOCKET) { - extern int socklist_find_reply_socket(struct sockaddr *sa); - replyfd = socklist_find_reply_socket(srcaddr); + if (socklist[socklistindex].type != SOCKLIST_UNICAST_SOCKET) { + extern int socklist_find_reply_socket(struct sockaddr *sa,int port); + + + int port=sock_getport(&socklist[socklistindex].addr); + replyfd = socklist_find_reply_socket(srcaddr,port); + if (replyfd == -1) { cw_log(LOG_ERR, "Can't find reply socket for request from %s", sock_addr2str(srcaddr)); @@ -511,6 +514,13 @@ struct wtpman *wtpman_create(int socklistindex, struct sockaddr *srcaddr) int sockfd = replyfd; //socklist[socklistindex].reply_sockfd; + + struct sockaddr dbgaddr; + socklen_t dbgaddrl=sizeof(dbgaddr); + getsockname(sockfd,&dbgaddr,&dbgaddrl); + + cw_dbg(DBG_INFO,"Creating wtpman with socket %d, %s:%d",sockfd,sock_addr2str(&dbgaddr),sock_getport(&dbgaddr)); + wtpman->conn = conn_create(sockfd, srcaddr, 100); if (!wtpman->conn) { wtpman_destroy(wtpman);