New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixed Issue ros/roslisp#12 #16
Conversation
This reverts commit 0a12dce.
…p after start-ros-node
@moesenle Could you make a quick code review? I will do some further testing, today. |
(dbind (protocol address port) | ||
;; Check if it's our publisher if that's the case don't request the topic | ||
;; using a ros-rpc-call since it would deadlock and time out | ||
(if (equal uri *xml-rpc-caller-api*) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a minor comment on Lisp style: I would only use IF if there is just one small expression in the if and else block. For multiple lines, I would always use COND. But that's really just a minor thing.
I just gave it a very quick review and trust that you tested it. Looks quite good and I'm really happy that finally someone fixed the self-subscription problem. Great work and thanks! |
@moesenle Thanks for reviewing and merging! :) |
For use-case 1:
When subscribing to oneself, subscribers do not wait for answer to send-tcp-header because it would otherwise deadlock. This is applicable because the answer has always been ignored anyway. Additionally, we know the md5 sums to match because we are the same node. Finally, in case of self-subscription publisher do not send response to received tcp-header.
For use-case 2:
When subscribing to oneself, subscribers do not send an xml-rpc to avoid a deadlock. Instead, they directly call |requestTopic| on themselves.