From 428cbd802dfe2dbfefb1348e1d260412147bcc6a Mon Sep 17 00:00:00 2001 From: Nito Martinez Date: Fri, 20 Nov 2015 02:44:35 +0100 Subject: [PATCH] Fixes #2982. The idea is to be able to create the socket externally and pass that socket FD to FreeRDP so that it can be used there. The idea suggested is to use the following interface: settings->ServerHostname = "|" settings->ServerPort = SocketFD --- libfreerdp/core/tcp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libfreerdp/core/tcp.c b/libfreerdp/core/tcp.c index 58dd96d50..6496f75a4 100644 --- a/libfreerdp/core/tcp.c +++ b/libfreerdp/core/tcp.c @@ -1047,6 +1047,7 @@ int freerdp_tcp_connect(rdpContext* context, rdpSettings* settings, UINT32 optval; socklen_t optlen; BOOL ipcSocket = FALSE; + BOOL useExternalDefinedSocket = FALSE; if (!hostname) return -1; @@ -1054,12 +1055,18 @@ int freerdp_tcp_connect(rdpContext* context, rdpSettings* settings, if (hostname[0] == '/') ipcSocket = TRUE; + if (hostname[0] == '|') + useExternalDefinedSocket = TRUE; + if (ipcSocket) { sockfd = freerdp_uds_connect(hostname); if (sockfd < 0) return -1; + } else if (useExternalDefinedSocket) + { + sockfd = port; } else {