proxy not working: "Advertising with * as the md5sum is not allowed."

Bug #669782 reported by Patrick Bouffard
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
umd-ros-pkg
Fix Committed
Undecided
Ken

Bug Description

C-Turtle (installed from SVN and up to date), Ubuntu 10.10 64-bit.

When I try to run the proxy node, I get an error:

$ rosrun proxy proxy
terminate called after throwing an instance of 'ros::InvalidParameterException'
  what(): Advertising with * as the md5sum is not allowed. Topic [/proxy/rosout_agg]
/home/bouffard/ros/ros/bin/rosrun: line 35: 12340 Aborted $exepath "$@"

The relay node from topic_tools does work in this same setup. However I have a lot of topics that I would like to relay and don't want to run a separate node for each one of them.

Revision history for this message
Ken (kennyt) wrote :

I had asked the ros-users mailing list how to get the md5sums of the advertised topics. It turned out that you can only do so by actually subscribing to the topic, as the master doesn't track md5sums (why?? It tracks simple types). I brought up this solution of advertising a "[message_name]/*" topic type and was warned that the "*" advertisement capability would be removed in the future ... I guess that's what's happened.

To get around this, the proxy node might have to do fake subscriptions to each of the new topics as they appear, sending its own md5="[something incorrect]" subscription to each of the publishers, before advertising the proxied topics. Unfortunately, it looks like roscpp publishers only ever send a "no, the md5sum is [...]" message in human-readable form (connection::sendHeaderError), so that would have to be intercepted somehow. roscpp's UDPROS negotiation implementation (requestTopic) does provide the advertised md5sum, but I'm not sure if that'll work for non-cpp publishers.

Revision history for this message
Ken (kennyt) wrote :

(I mean that you could only get the md5sum by subscribing, *receiving a message*, and then extracting the md5sum from the message.)

Changed in umd-ros-pkg:
status: New → In Progress
assignee: nobody → Ken (kennyt)
Revision history for this message
Ken (kennyt) wrote :

The proxy node now uses its local copy of the message definitions to figure out what MD5 checksum it should send. This means that it's no longer able to proxy messages for which it doesn't have a .msg file -- between two other computers, for example. It still works without any extra subscriptions and without deserializing anything.

Changed in umd-ros-pkg:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.