From b2e8ddc37278588c7364770a6e98cda76cc9b540 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Tue, 5 Apr 2011 13:57:41 +0300 Subject: gweb: numeric session address was not resolved properly. Reported by: Sebastien Bianti --- gweb/gweb.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gweb/gweb.c b/gweb/gweb.c index 75e64d96..9c9fcd1b 100644 --- a/gweb/gweb.c +++ b/gweb/gweb.c @@ -1148,9 +1148,30 @@ static guint do_request(GWeb *web, const char *url, return 0; } } else { + struct addrinfo hints; + char *port; + int ret; + if (session->address == NULL) session->address = g_strdup(session->host); + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_flags = AI_NUMERICHOST; + + if (session->addr != NULL) { + freeaddrinfo(session->addr); + session->addr = NULL; + } + + port = g_strdup_printf("%u", session->port); + ret = getaddrinfo(session->address, port, &hints, + &session->addr); + g_free(port); + if (ret != 0 || session->addr == NULL) { + free_session(session); + return 0; + } + if (create_transport(session) < 0) { free_session(session); return 0; -- cgit v1.2.3