diff --git a/src/client/sock.c b/src/client/sock.c
index d4596cd7a858cda76e1144492c5e2cf71c11291b..0d734f3a9462ba74bb7405beb94c9fdeecb67d8a 100644 (file)
--- a/src/client/sock.c
+++ b/src/client/sock.c
#include <arpa/inet.h>
+#include <assert.h>
#include <errno.h>
#include <limits.h>
continue;
if (rstatus == UINT32_MAX) {
+ const char *str = sdb_strbuf_string(buf) + data_offset;
+ size_t len = sdb_strbuf_len(buf) - data_offset;
+ ssize_t n;
+
/* retrieve status and data len */
- rstatus = sdb_proto_get_int(buf, data_offset);
- rlen = sdb_proto_get_int(buf, data_offset + sizeof(rstatus));
+ assert(len >= 2 * sizeof(uint32_t));
+ n = sdb_proto_unmarshal_int32(str, len, &rstatus);
+ str += n; len -= (size_t)n;
+ sdb_proto_unmarshal_int32(str, len, &rlen);
if (! rlen)
break;