libfreerdp-coree/tranport: minimum fastpath packet size is 3.
authorVic Lee <llyzs@163.com>
Tue, 23 Aug 2011 07:36:03 +0000 (15:36 +0800)
committerVic Lee <llyzs@163.com>
Tue, 23 Aug 2011 07:36:03 +0000 (15:36 +0800)
libfreerdp-core/transport.c

index 2d98db9..79df17f 100644 (file)
@@ -293,15 +293,27 @@ int transport_check_fds(rdpTransport* transport)
 
        while ((pos = stream_get_pos(transport->recv_buffer)) > 0)
        {
-               /* Ensure the TPKT or Fast Path header is available. */
-               if (pos <= 4)
-                       return 0;
-
                stream_set_pos(transport->recv_buffer, 0);
                if (tpkt_verify_header(transport->recv_buffer)) /* TPKT */
+               {
+                       /* Ensure the TPKT header is available. */
+                       if (pos <= 4)
+                       {
+                               stream_set_pos(transport->recv_buffer, pos);
+                               return 0;
+                       }
                        length = tpkt_read_header(transport->recv_buffer);
+               }
                else /* Fast Path */
+               {
+                       /* Ensure the Fast Path header is available. */
+                       if (pos <= 2)
+                       {
+                               stream_set_pos(transport->recv_buffer, pos);
+                               return 0;
+                       }
                        length = fastpath_read_header(NULL, transport->recv_buffer);
+               }
 
                if (length == 0)
                {