summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2011-01-27 14:26:42 +0100
committerReiner Herrmann <reiner@reiner-h.de>2011-01-27 14:26:42 +0100
commitbb2a0902e047e90a857bf189ad057662759e3a40 (patch)
tree7c512dfe035025ccf8a3016b2e348f8bd6f0ce2a /src/net
parent7c5a0f2179cad03692ce3b47328a91e4817567fc (diff)
specify MSG_WAITALL flag on recv operations to really get requested amount of data
Diffstat (limited to 'src/net')
-rw-r--r--src/net/comm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/net/comm.c b/src/net/comm.c
index 0c7d8e9..7a67c27 100644
--- a/src/net/comm.c
+++ b/src/net/comm.c
@@ -11,7 +11,7 @@ bool net_recv(const int sock, const msg_type_t type)
{
msg_t m;
bool result;
- ssize_t len = recv(sock, &m.hdr, sizeof(msg_header_t), MSG_PEEK); // just peek into packet to determine message header
+ ssize_t len = recv(sock, &m.hdr, sizeof(msg_header_t), MSG_PEEK|MSG_WAITALL); // just peek into packet to determine message header
assert(len != -1);
@@ -22,8 +22,8 @@ bool net_recv(const int sock, const msg_type_t type)
}
m.payload = malloc(m.hdr.payload_length); // Allocate space for message payload
- recv(sock, &m.hdr, sizeof(msg_header_t), 0); // Remove message header from socket
- recv(sock, m.payload, m.hdr.payload_length, 0);// And then receive the payload
+ recv(sock, &m.hdr, sizeof(msg_header_t), MSG_WAITALL); // Remove message header from socket
+ recv(sock, m.payload, m.hdr.payload_length, MSG_WAITALL);// And then receive the payload
//printf("net_recv: received msg type %d with payload length %d\n", m.hdr.type, m.hdr.payload_length);