diff options
Diffstat (limited to 'gweb/gweb.c')
-rw-r--r-- | gweb/gweb.c | 21 |
1 files changed, 21 insertions, 0 deletions
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; |