diff options
Diffstat (limited to 'libpipe/stream.c')
-rw-r--r-- | libpipe/stream.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libpipe/stream.c b/libpipe/stream.c index 8eb90435..671907e7 100644 --- a/libpipe/stream.c +++ b/libpipe/stream.c @@ -56,8 +56,17 @@ static error_t stream_read (struct packet *packet, int *dequeue, unsigned *flags, char **data, size_t *data_len, size_t amount) { - error_t err = packet_read (packet, data, data_len, amount); - *dequeue = (packet_readable (packet) == 0); + error_t err; + if (flags && *flags & MSG_PEEK) + { + err = packet_peek (packet, data, data_len, amount); + *dequeue = 0; + } + else + { + err = packet_read (packet, data, data_len, amount); + *dequeue = (packet_readable (packet) == 0); + } return err; } |