core: handle transport->recv_callback correctly

the boolean return value of transport->recv_callback was directly assigned to "int status" in transport_check_fds.
now status is set to -1 if transport_check_fds returns False.

this was also the reason for the long delays on logoff followed by these messages:
"SSL_read: I/O error" (with --sec nla|tls)
"recv: Connection reset by peer" + "send: Broken pipe" (with --sec rdp)
This commit is contained in:
Norbert Federa 2011-10-18 23:47:44 +02:00
parent b1833f26ea
commit e0cf2a83f7

View File

@ -347,7 +347,10 @@ int transport_check_fds(rdpTransport* transport)
stream_set_pos(received, length);
stream_seal(received);
stream_set_pos(received, 0);
status = transport->recv_callback(transport, received, transport->recv_extra);
if (transport->recv_callback(transport, received, transport->recv_extra) == False)
status = -1;
stream_free(received);
if (status < 0)