free(message);
}
+int rnet_message_strip(struct rnet_message *message, size_t len)
+{
+ if (len > message->len)
+ return -1;
+ message->len -= len;
+ memmove(message->buffer, message->buffer + len, message->len);
+ return 0;
+}
+
static int add_field(struct rnet_message **message, char *key, int klen,
char *val, int vlen)
{
int b;
char *key;
int klen;
- char *kcopy;
/* skip first byte */
i++;
while (i < len) {
- j = buffer[i];
+ j = (unsigned char)buffer[i];
b = j & 0x80;
if (b)
;
key = buffer + i;
klen = j;
i += j;
- j = buffer[i];
+ j = (unsigned char)buffer[i];
i++;
if (b)
- j = j << 8 | buffer[i++];
+ j = j << 8 | (unsigned char)buffer[i++];
*value = buffer + i;
*vlen = j;
i += j;