diff options
| author | metalefty <meta@vmeta.jp> | 2016-11-24 17:01:18 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-24 17:01:18 +0900 |
| commit | 589b29f92f7aabc3ff2212cd5be93bb6bce6b811 (patch) | |
| tree | cd36a35b86bed3ddb1e4a7ea54393f676a4c43e2 | |
| parent | 44149ef8a377df7b4e79b48626a5ddf84c42fa00 (diff) | |
| parent | 849a8075c586418645072e99693ba1245fadb4b3 (diff) | |
| download | xrdp-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.c | 16 |
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) |
