Skip to content

Instantly share code, notes, and snippets.

@gdamore
Created May 16, 2018 16:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdamore/80997fb439734d48574a23fb76db5de0 to your computer and use it in GitHub Desktop.
Save gdamore/80997fb439734d48574a23fb76db5de0 to your computer and use it in GitHub Desktop.
--- a/src/protocol/bus0/bus.c
+++ b/src/protocol/bus0/bus.c
@@ -297,7 +297,12 @@ bus0_sock_getq_cb(void *arg)
}
nni_mtx_lock(&s->mtx);
- lastp = nni_list_last(&s->pipes);
+ if (((lastp = nni_list_last(&s->pipes)) != NULL) &&
+ (nni_pipe_id(lastp->npipe) == sender)) {
+ // If the last pipe in the list is our sender,
+ // then ignore it and move to the one just previous.
+ lastp = nni_list_prev(&s->pipes, lastp);
+ }
NNI_LIST_FOREACH (&s->pipes, p) {
if (nni_pipe_id(p->npipe) == sender) {
continue;
@@ -308,16 +313,14 @@ bus0_sock_getq_cb(void *arg)
}
} else {
dup = msg;
+ msg = NULL;
}
if (nni_msgq_tryput(p->sendq, dup) != 0) {
nni_msg_free(dup);
}
}
nni_mtx_unlock(&s->mtx);
-
- if (lastp == NULL) {
- nni_msg_free(msg);
- }
+ nni_msg_free(msg);
bus0_sock_getq(s);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment