aboutsummaryrefslogtreecommitdiff
path: root/sockutils.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-10-19 10:27:04 -0700
committerGuy Harris <guy@alum.mit.edu>2018-10-19 10:27:04 -0700
commitd491c4d68d38902ce71fcceed49aeac1f574f533 (patch)
tree5fb8a5cb5552dfab10a03913392c522a194223ba /sockutils.c
parenta463e82f5f0152c3c0d7cf1ebfa56d9b099f7fee (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.c6
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)
{