Piggyback message support

"Tunnel Team" <[email protected]> Tue, 15 Apr 2003 17:07:11 -0700
Newsgroups gmane.network.beep.roadrunner.general
Message-ID <0b4701c303ac$218b4760$573fad86@chip>
Our team is nearing completion of our Tunnel implementation (code will be
available soon on sourceforge once we can get our CVS repository
transfered.)

I'm working on adding piggybacking support to the profile for standards
compliance and to aid in testing with our beepcore-java version of the
profile. As I see it, there are 4 areas where piggybacked messages need to
be taken care of:

1) sending from the client
2) receiving on the server
3) replying from the server
4) receiving the reply on the client

Our current code supports 1) and 2), but I've been having a bit of trouble
with 3) and 4).

I suspect that I can get 3) to work on an endpoint server once I figure out
what function to call to set the piggyback response message. However,
problems arise if the server is acting as a proxy for the tunnel profile. A
response cannot be sent until the entire tunnel has been setup, or setup has
failed (ok or error message). I've tried to complete the setup of the next
connection from within tunnel's server_init function, but it seems to get
hung at the point where I try to open a new tcp beep connection to the next
hop (rr_tcp_connection_new). Currently I'm getting around this problem by
spawning off a thread to finish the setup and then send a non-piggybacked
reply so that the server_init function is allowed to return. Since that
method works, I'm guessing my problem is due to some sort of deadlock
condition within the roadrunner libraries. Is this the case? Is there a
work-around? Am I missing something?

I haven't even looked into 4) since I haven't gotten 3) working to test
against yet, so any tips in getting this working would be appreciated as
well.

Thanks,
- Chip Bradford