diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-01-02 17:35:49 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-01-02 17:35:49 -0800 |
| commit | 13e380343c0eec96a723e7407d59fb7f5d20aba0 (patch) | |
| tree | f50fdea3117c64d460fc82ce7978b6b4253250cf /src/transport | |
| parent | ec2b1275153487fda661942d9b98aab2567b612e (diff) | |
| download | nng-13e380343c0eec96a723e7407d59fb7f5d20aba0.tar.gz nng-13e380343c0eec96a723e7407d59fb7f5d20aba0.tar.bz2 nng-13e380343c0eec96a723e7407d59fb7f5d20aba0.zip | |
Fixes to enable REQ/REP to operate.
This uncovered a few problems - inproc was not moving the headers
to the body on transmit, and the message chunk allocator had a serious
bug leading to memory corruption. I've also added a message dumper,
which turns out to be incredibly useful during debugging.
Diffstat (limited to 'src/transport')
| -rw-r--r-- | src/transport/inproc/inproc.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/transport/inproc/inproc.c b/src/transport/inproc/inproc.c index ff0e9a2e..530e7ccf 100644 --- a/src/transport/inproc/inproc.c +++ b/src/transport/inproc/inproc.c @@ -132,7 +132,17 @@ static int nni_inproc_pipe_send(void *arg, nni_msg *msg) { nni_inproc_pipe *pipe = arg; - + char *h; + size_t l; + + // We need to move any header data to the body, because the other + // side won't know what to do otherwise. + h = nni_msg_header(msg, &l); + if (nni_msg_prepend(msg, h, l) != 0) { + nni_msg_free(msg); + return (0); // Pretend we sent it. + } + nni_msg_trim_header(msg, l); return (nni_msgq_put(pipe->wq, msg)); } |
