aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/message.c29
-rw-r--r--src/core/message.h6
2 files changed, 24 insertions, 11 deletions
diff --git a/src/core/message.c b/src/core/message.c
index 351858a4..4c666955 100644
--- a/src/core/message.c
+++ b/src/core/message.c
@@ -185,8 +185,11 @@ nni_chunk_trim(nni_chunk *ch, size_t len)
if (ch->ch_len < len) {
return (NNG_EINVAL);
}
- ch->ch_ptr += len;
ch->ch_len -= len;
+ // Don't advance the pointer if we are just removing the whole content
+ if (ch->ch_len != 0) {
+ ch->ch_ptr += len;
+ }
return (0);
}
@@ -442,25 +445,33 @@ nni_msg_realloc(nni_msg *m, size_t sz)
void *
-nni_msg_header(nni_msg *m, size_t *szp)
+nni_msg_header(nni_msg *m)
{
- if (szp != NULL) {
- *szp = m->m_header.ch_len;
- }
return (m->m_header.ch_ptr);
}
+size_t
+nni_msg_header_len(nni_msg *m)
+{
+ return (m->m_header.ch_len);
+}
+
+
void *
-nni_msg_body(nni_msg *m, size_t *szp)
+nni_msg_body(nni_msg *m)
{
- if (szp != NULL) {
- *szp = m->m_body.ch_len;
- }
return (m->m_body.ch_ptr);
}
+size_t
+nni_msg_len(nni_msg *m)
+{
+ return (m->m_body.ch_len);
+}
+
+
int
nni_msg_append(nni_msg *m, const void *data, size_t len)
{
diff --git a/src/core/message.h b/src/core/message.h
index 0f9a24ac..057c7539 100644
--- a/src/core/message.h
+++ b/src/core/message.h
@@ -16,8 +16,10 @@ extern int nni_msg_alloc(nni_msg **, size_t);
extern void nni_msg_free(nni_msg *);
extern int nni_msg_realloc(nni_msg *, size_t);
extern int nni_msg_dup(nni_msg **, const nni_msg *);
-extern void *nni_msg_header(nni_msg *, size_t *);
-extern void *nni_msg_body(nni_msg *, size_t *);
+extern void *nni_msg_header(nni_msg *);
+extern size_t nni_msg_header_len(nni_msg *);
+extern void *nni_msg_body(nni_msg *);
+extern size_t nni_msg_len(nni_msg *);
extern int nni_msg_append(nni_msg *, const void *, size_t);
extern int nni_msg_prepend(nni_msg *, const void *, size_t);
extern int nni_msg_append_header(nni_msg *, const void *, size_t);