You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The code tries to bind the same socket to IPv6, or IPv4.
However, the socket has been created with one of these these calls in g_tcp_socket():-
(int)socket(AF_INET6, SOCK_STREAM, 0);
or
rv = (int)socket(AF_INET, SOCK_STREAM, 0);
In other words, the same socket can't be used for binding on both address families.
There's a similar problem with connect(), in that in g_tcp_connect() we try to connect a socket to both address families.
This looks pretty fundamental to me, and probably needs quite a big change. The good news is we don't connect a lot any more in v0.10.x over TCP sockets - it's mostly a listen() problem. We know there are definitely a few niggles with the IPv6 implementation, and this looks like one.
I'd appreciate any thoughts on this at all. @metalefty, @jsorg71, @Nexarian - please let me know what you think.
The text was updated successfully, but these errors were encountered:
xrdp version
All IPv6
Detailed xrdp version, build options
Operating system & version
All
Installation method
Doesn't matter
Which backend do you use?
All
What desktop environment do you use?
any
Environment xrdp running on
All
What's your client?
No response
Area(s) with issue?
Network
Steps to reproduce
No steps as such - see below.
✔️ Expected Behavior
See below
❌ Actual Behavior
See below
Anything else?
While testing #3390, I found some interesting messages in
xrdp-sesman.log
:-Linux
98 is
EADDRINUSE
and 22 isEINVAL
FreeBSD
48 is
EADDRINUSE
, and 47 isEAFNOSUPPORT
.In both cases, the IPv6 error was expected, and the IPv4 error wasn't.
The problem is caused by this code:-
The code tries to bind the same socket to IPv6, or IPv4.
However, the socket has been created with one of these these calls in
g_tcp_socket()
:-or
In other words, the same socket can't be used for binding on both address families.
There's a similar problem with
connect()
, in that ing_tcp_connect()
we try to connect a socket to both address families.This looks pretty fundamental to me, and probably needs quite a big change. The good news is we don't connect a lot any more in v0.10.x over TCP sockets - it's mostly a listen() problem. We know there are definitely a few niggles with the IPv6 implementation, and this looks like one.
I'd appreciate any thoughts on this at all. @metalefty, @jsorg71, @Nexarian - please let me know what you think.
The text was updated successfully, but these errors were encountered: