projects
/
cascardo
/
libreceita.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add the missing field in the first message.
[cascardo/libreceita.git]
/
rnet_message.c
diff --git
a/rnet_message.c
b/rnet_message.c
index
abe656b
..
e9a6345
100644
(file)
--- a/
rnet_message.c
+++ b/
rnet_message.c
@@
-27,7
+27,7
@@
#define MAX(a,b) (a >= b) ? a : b
#endif
#define MAX(a,b) (a >= b) ? a : b
#endif
-
static
int rnet_message_expand(struct rnet_message **message, size_t len)
+int rnet_message_expand(struct rnet_message **message, size_t len)
{
struct rnet_message *msg = *message;
struct rnet_message *nmsg;
{
struct rnet_message *msg = *message;
struct rnet_message *nmsg;
@@
-58,13
+58,16
@@
void rnet_message_del(struct rnet_message *message)
free(message);
}
free(message);
}
-static int add_field(struct rnet_message *msg, char *key, int klen, char *val, int vlen)
+static int add_field(struct rnet_message **message, char *key, int klen,
+ char *val, int vlen)
{
int n = 0;
char *buffer;
{
int n = 0;
char *buffer;
+ struct rnet_message *msg = *message;
if ((msg->alen - msg->len) < (klen + vlen + 3)) {
if ((msg->alen - msg->len) < (klen + vlen + 3)) {
- if (rnet_message_expand(
&msg
, MAX(msg->len, klen + vlen + 3)))
+ if (rnet_message_expand(
message
, MAX(msg->len, klen + vlen + 3)))
return -ENOMEM;
return -ENOMEM;
+ msg = *message;
}
buffer = msg->buffer + msg->len;
if (klen > 0x7f || klen < 0)
}
buffer = msg->buffer + msg->len;
if (klen > 0x7f || klen < 0)
@@
-95,30
+98,36
@@
static int add_field(struct rnet_message *msg, char *key, int klen, char *val, i
return n;
}
return n;
}
-int rnet_message_add_u32(struct rnet_message *msg, char *key, uint32_t val)
+int rnet_message_add_u32(struct rnet_message *
*
msg, char *key, uint32_t val)
{
uint32_t nval = htonl(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
{
uint32_t nval = htonl(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
-int rnet_message_add_ascii(struct rnet_message *msg, char *key, char *val)
+int rnet_message_add_ascii(struct rnet_message *
*
msg, char *key, char *val)
{
return add_field(msg, key, strlen(key), val, strlen(val));
}
{
return add_field(msg, key, strlen(key), val, strlen(val));
}
-int rnet_message_add_u8(struct rnet_message *msg, char *key, uint8_t val)
+int rnet_message_add_u8(struct rnet_message *
*
msg, char *key, uint8_t val)
{
return add_field(msg, key, strlen(key), (char *) &val, sizeof(val));
}
{
return add_field(msg, key, strlen(key), (char *) &val, sizeof(val));
}
-int rnet_message_add_u16(struct rnet_message *msg, char *key, uint16_t val)
+int rnet_message_add_u16(struct rnet_message *
*
msg, char *key, uint16_t val)
{
uint16_t nval = htons(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
{
uint16_t nval = htons(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
-int rnet_message_add_u64(struct rnet_message *msg, char *key, uint64_t val)
+int rnet_message_add_u64(struct rnet_message *
*
msg, char *key, uint64_t val)
{
uint64_t nval = htobe64(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
{
uint64_t nval = htobe64(val);
return add_field(msg, key, strlen(key), (char *) &nval, sizeof(val));
}
+
+int rnet_message_add_buffer(struct rnet_message **msg, char *key,
+ char *buffer, size_t len)
+{
+ return add_field(msg, key, strlen(key), buffer, len);
+}