summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormetalefty <meta@vmeta.jp>2016-11-24 17:01:18 +0900
committerGitHub <noreply@github.com>2016-11-24 17:01:18 +0900
commit589b29f92f7aabc3ff2212cd5be93bb6bce6b811 (patch)
treecd36a35b86bed3ddb1e4a7ea54393f676a4c43e2
parent44149ef8a377df7b4e79b48626a5ddf84c42fa00 (diff)
parent849a8075c586418645072e99693ba1245fadb4b3 (diff)
downloadxrdp-proprietary-589b29f92f7aabc3ff2212cd5be93bb6bce6b811.tar.gz
xrdp-proprietary-589b29f92f7aabc3ff2212cd5be93bb6bce6b811.zip
Merge pull request #461 from metalefty/ipv6/fallback-to-ipv4
common: If IPv6 not supported, fall back to IPv4
-rw-r--r--common/os_calls.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/os_calls.c b/common/os_calls.c
index df08b9e3..d8e711b8 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -416,11 +416,27 @@ g_tcp_socket(void)
#if defined(XRDP_ENABLE_IPV6)
rv = (int)socket(AF_INET6, SOCK_STREAM, 0);
+ if (rv < 0)
+ {
+ log_message(LOG_LEVEL_ERROR, "g_tcp_socket: %s", g_get_strerror());
+
+ switch (errno)
+ {
+ case EAFNOSUPPORT: /* if IPv6 not supported, retry IPv4 */
+ log_message(LOG_LEVEL_INFO, "IPv6 not supported, falling back to IPv4");
+ rv = (int)socket(AF_INET, SOCK_STREAM, 0);
+ break;
+
+ default:
+ return -1;
+ }
+ }
#else
rv = (int)socket(AF_INET, SOCK_STREAM, 0);
#endif
if (rv < 0)
{
+ log_message(LOG_LEVEL_ERROR, "g_tcp_socket: %s", g_get_strerror());
return -1;
}
#if defined(XRDP_ENABLE_IPV6)