diff options
author | Guy Harris <guy@alum.mit.edu> | 2018-10-19 10:27:04 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2018-10-19 10:27:04 -0700 |
commit | d491c4d68d38902ce71fcceed49aeac1f574f533 (patch) | |
tree | 5fb8a5cb5552dfab10a03913392c522a194223ba /sockutils.c | |
parent | a463e82f5f0152c3c0d7cf1ebfa56d9b099f7fee (diff) |
Add a flag to allow peeking at messages in sock_recv().
It works like MSG_PEEK (because it causes MSG_PEEK to be set in the
recv() flags).
Diffstat (limited to 'sockutils.c')
-rw-r--r-- | sockutils.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sockutils.c b/sockutils.c index 4bb97a71..7ed7d298 100644 --- a/sockutils.c +++ b/sockutils.c @@ -838,6 +838,7 @@ int sock_bufferize(const char *buffer, int size, char *tempbuf, int *offset, int int sock_recv(SOCKET sock, void *buffer, size_t size, int flags, char *errbuf, int errbuflen) { + int recv_flags = 0; char *bufp = buffer; int remaining; ssize_t nread; @@ -858,6 +859,9 @@ int sock_recv(SOCKET sock, void *buffer, size_t size, int flags, return -1; } + if (flags & SOCK_MSG_PEEK) + recv_flags |= MSG_PEEK; + bufp = (char *) buffer; remaining = (int) size; @@ -866,7 +870,7 @@ int sock_recv(SOCKET sock, void *buffer, size_t size, int flags, * Win32. */ for (;;) { - nread = recv(sock, bufp, remaining, 0); + nread = recv(sock, bufp, remaining, recv_flags); if (nread == -1) { |