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)
{