From: Vic Lee Date: Wed, 3 Aug 2011 01:46:04 +0000 (+0800) Subject: libfreerdp-core/transport: add stream_seal when a packet is received. X-Git-Tag: 1.0-beta1~370^2^2~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83873800355b1d84467e3dcd755b1d955d195e75;p=platform%2Fupstream%2Ffreerdp.git libfreerdp-core/transport: add stream_seal when a packet is received. --- diff --git a/include/freerdp/utils/stream.h b/include/freerdp/utils/stream.h index b734516..a345f75 100644 --- a/include/freerdp/utils/stream.h +++ b/include/freerdp/utils/stream.h @@ -35,8 +35,7 @@ typedef struct _STREAM STREAM; STREAM* stream_new(int size); void stream_free(STREAM* stream); -void -stream_extend(STREAM* stream); +void stream_extend(STREAM* stream); #define stream_check_size(_s,_n) \ while (_s->p - _s->data + (_n) > _s->size) \ stream_extend(_s) @@ -45,6 +44,7 @@ stream_extend(STREAM* stream); #define stream_set_pos(_s,_m) _s->p = _s->data + (_m) #define stream_seek(_s,_offset) _s->p += (_offset) #define stream_rewind(_s,_offset) _s->p -= (_offset) +#define stream_seal(_s) _s->size = (_s->p - _s->data) #define stream_get_mark(_s,_mark) _mark = _s->p #define stream_set_mark(_s,_mark) _s->p = _mark #define stream_get_head(_s) _s->data @@ -52,6 +52,7 @@ stream_extend(STREAM* stream); #define stream_get_length(_s) (_s->p - _s->data) #define stream_get_data(_s) (_s->data) #define stream_get_size(_s) (_s->size) +#define stream_get_left(_s) (_s->size - (_s->p - _s->data)) #define stream_read_uint8(_s, _v) do { _v = *_s->p++; } while (0) #define stream_read_uint16(_s, _v) do { _v = \ diff --git a/libfreerdp-core/transport.c b/libfreerdp-core/transport.c index e341018..4548888 100644 --- a/libfreerdp-core/transport.c +++ b/libfreerdp-core/transport.c @@ -263,6 +263,8 @@ int transport_check_fds(rdpTransport* transport) stream_copy(transport->recv_buffer, received, pos - length); } + stream_set_pos(received, length); + stream_seal(received); stream_set_pos(received, 0); status = transport->recv_callback(transport, received, transport->recv_extra); stream_free(received);