Commit Graph

152 Commits

Author SHA1 Message Date
Marc-André Moreau
a8be174e03 libfreerdp-core: remove ineffective full duplex locks 2014-06-01 11:20:13 -04:00
Marc-André Moreau
1ac2350ec5 libfreerdp-core: fail more gracefully when transport thread dies 2014-06-01 10:46:43 -04:00
Marc-André Moreau
98077cfc24 Merge branch 'master' of github.com:FreeRDP/FreeRDP
Conflicts:
	libfreerdp/core/transport.c
2014-05-30 15:06:07 -04:00
Marc-André Moreau
b1416af362 libfreerdp-core: add locks to disable full duplex BIOs (currently unsafe) 2014-05-30 14:53:10 -04:00
Marc-André Moreau
d2ad5f698b libfreerdp-core: fix VerifyX509Certificate to make distinction between gateway and direct connection 2014-05-30 14:36:18 -04:00
Marc-André Moreau
709df9aecc libfreerdp-core: add connection timeout, fix gateway bypass local 2014-05-30 14:03:20 -04:00
Vic Lee
e4e1315131 transport: add another null pointer check. 2014-05-31 01:08:00 +08:00
Marc-André Moreau
629858b676 libfreerdp-core: add gateway-usage-method command line option, avoid resetting BIO flags we shouldn't reset 2014-05-30 12:31:26 -04:00
Vic Lee
a3461cef06 transport: add a null pointer check. 2014-05-30 23:34:04 +08:00
Hardening
5c9a6408cf Fixed invalid declaration and missing argument 2014-05-21 19:13:40 +02:00
Hardening
dd6d829550 Allow transport_write calls to be non-blocking
This big patch allows to have non-blocking writes. To achieve
this, it slightly changes the way transport is handled. The misc transport
layers are handled with OpenSSL BIOs. In the chain we insert a
bufferedBIO that will bufferize write calls that couldn't be honored.

For an access with Tls security the BIO chain would look like this:
  FreeRdp Code ===> SSL bio ===> buffered BIO ===> socket BIO

The buffered BIO will store bytes that couldn't be send because of
blocking write calls.

This patch also rework TSG so that it would look like this in the
case of SSL security with TSG:
                                         (TSG in)
                              > SSL BIO => buffered BIO ==> socket BIO
                             /
FreeRdp => SSL BIO => TSG BIO
                             \
                              > SSL BIO => buffered BIO ==> socket BIO
                                        (TSG out)

So from the FreeRDP point of view sending something is only BIO_writing
on the frontBio (last BIO on the left).
2014-05-21 17:42:31 +02:00
Marc-André Moreau
c2a59c23a7 libfreerdp-core: fix potential crash on session redirection failure 2014-04-28 16:44:52 -04:00
Bernhard Miklautz
630cb35aa5 transport: fix variable initialization
Fixes possible problem when NLA is enabled and header verification fails.
2014-04-17 12:08:09 +02:00
Norbert Federa
4e2b696221 libfreerdp-core: fix transport_check_fds
This patch fixes an issue with hung clients connected to FreeRDP server:

- Removed the completely useless inner while loop which used the transport
  receive buffer stream position as break contition: The transport receive
  buffer stream is replaced after each iteration of this loop with a fresh
  instance from a pool which has the position set to 0. Thus it was
  technically impossible that this loop would ever be run twice.

- We must not always return if transport_read_nonblocking returns 0:
  transport_read_nonblocking() is also called in transport_write() and
  therefore it is possible that the stream position of the transport
  receive buffer is already > 0 when entering transport_check_fds.
2014-04-03 21:42:32 +02:00
Marc-André Moreau
56d75ac892 libfreerdp-core: fix non-C89 declaration 2014-04-01 20:56:34 -04:00
Marc-André Moreau
feea87b42f libfreerdp-crypto: make distinction between TLS connection error and user cancellation 2014-04-01 16:23:27 -04:00
Marc-André Moreau
a8551f4008 libfreerdp-core: fix potential issue while reading packet headers 2014-03-27 17:09:26 -04:00
Marc-André Moreau
3f07157637 libfreerdp-core: enforce checking of NLA packets in transport only when expecting NLA 2014-03-27 14:24:15 -04:00
Marc-André Moreau
14b75d1b27 libfreerdp-core: fix build warnings and windows broken build 2014-03-25 15:19:52 -04:00
Marc-André Moreau
4c920506ed libfreerdp-core: add 'Bypass RD Gateway server for local addresses' feature 2014-03-24 14:44:18 -04:00
Benoît LeBlanc
4bed3d082f Merge branch 'master' of git://github.com/awakecoding/FreeRDP 2014-03-21 14:03:38 -04:00
Benoît LeBlanc
d1b9565f51 Added context-specific error management.
Added error codes to replace connectErrorCode.
2014-03-20 18:19:54 -04:00
Marc-André Moreau
40ffe51aef Merge branch 'master' of github.com:mrthebunny/FreeRDP 2014-03-20 09:49:51 -04:00
Norbert Federa
52f06250fd libfreerdp-core: fixed transport
Commit 1daea0d0dc introduced an
error: If transport_read_nonblocking returns 0 we may not return
without checking if the ReceiveBuffer is empty.
2014-03-19 21:06:21 +01:00
Benoît LeBlanc
af28a35e0d Transport: closing transport before sending stop event caused SSL errors when stopping the session. 2014-03-18 15:27:23 -04:00
Marc-André Moreau
8b15db3b66 Merge branch 'master' of github.com:awakecoding/FreeRDP 2014-03-11 11:55:49 -04:00
Mike McDonald
1daea0d0dc Modified transport_check_fds to deliver all available PDUs before returning to the caller. This prevents the caller from waiting indefinitely for a socket to get signalled that data is available. It fixes a problem with Microsoft mobile clients connecting to FreeRDS whereby the client places both the MCS Erect Domain and MCS Attach User PDUs into the same ethernet frame. As a result, FreeRDS was only processing the first PDU and then blocking indefinitely waiting for data to arrive on the socket. 2014-03-10 15:35:14 -04:00
Benoît LeBlanc
557c082458 Merge branch 'master' of git://github.com/awakecoding/FreeRDP 2014-03-05 16:35:22 -05:00
Marc-André Moreau
8a44b2baa6 libfreerdp-core: add spn-class option 2014-02-12 00:43:02 -05:00
Benoît LeBlanc
53f2b8511d Merge branch 'master' of git://github.com/awakecoding/FreeRDP 2014-02-06 12:13:39 -05:00
Marc-André Moreau
e8a9b7ff14 libfreerdp-core: fix ignored port settings for TS Gateway and vmconnect 2014-02-05 11:54:42 -05:00
Benoît LeBlanc
70cc837eaf Transport: trigger OnErrorInfo if a read/write error forced the thread to closed. 2013-12-20 18:26:07 -05:00
Benoît LeBlanc
ad4d5c1ce7 Added timeout on blocking send, receive operations 2013-12-20 18:22:29 -05:00
Benoît LeBlanc
44e7d2f36c error handling in rpc and transport functions 2013-12-20 17:56:59 -05:00
Marc-André Moreau
51ad85e0ee libfreerdp-core: send Access Denied TLS alert when server-side NLA fails 2013-12-18 19:44:18 -05:00
Benoît LeBlanc
8c1f836ac8 - SSL verification callback: send correct hostname and port
- Gateway Authentication callback.
- Handling “use same credentials”
2013-12-06 22:15:45 -05:00
Marc-André Moreau
f429b909a9 libfreerdp-core: fix transport_free in cases where transport thread was not started 2013-11-26 11:30:44 -05:00
Marc-André Moreau
c4492411e4 Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-11-14 19:41:59 -05:00
Armin Novak
31ffb498f8 Fixed argument checks in <transport_disconnect> 2013-11-14 10:09:21 +01:00
Marc-André Moreau
b0b8b6aa9e Merge branch 'master' of github.com:FreeRDP/FreeRDP 2013-11-12 12:59:41 -05:00
Armin Novak
0ac908ba20 Added assertions to detect invalid call sequences of <transport_free>
and <transport_disconnect>.
2013-11-12 15:04:26 +01:00
Marc-André Moreau
70aed3fa85 libfreerdp-core: minor style cleanup 2013-11-08 13:57:41 -05:00
Marc-André Moreau
5536033a8a libfreerdp-core: transport refactoring 2013-11-07 17:37:58 -05:00
Marc-André Moreau
61f95fbe16 libfreerdp-core: transport code style cleanup 2013-11-07 15:14:59 -05:00
Marc-André Moreau
9921e519a9 mfreerdp: fix termination of MacFreeRDP 2013-11-05 11:49:42 -05:00
Marc-André Moreau
3d339b04d9 libfreerdp-core: modify parsing functions to return int instead of BOOL to propagate session redirection return code 2013-11-04 15:52:29 -05:00
Marc-André Moreau
1f31fd9ae1 libfreerdp-core: fix deadlock in transport thread 2013-11-04 14:16:59 -05:00
Marc-André Moreau
813a26a212 libfreerdp-core: change transport thread 2013-11-04 12:40:29 -05:00
Marc-André Moreau
13b6678977 libfreerdp-core: start untangling session redirection 2013-11-03 16:25:56 -05:00
Marc-André Moreau
3e3c0f1942 libfreerdp-core: fix potential asynchronous queuing memory problems for primary drawing orders 2013-11-03 13:29:48 -05:00