On Jan 15, 2004, at 19:10, Joel VanderWerf wrote:

> I've noticed that I can run a drb server on a firewalled host, and 
> talk to it from outside the firewall, if the client uses ssh tunneling 
> to forward the port. At least, this works for simple method calls 
> without blocks. The problem I'm seeing is that if a method on the 
> server side yields to a block on the client side, the connection 
> hangs. There is no problem with the same code within the firewall. I'm 
> guessing that drb is trying to open another port, which hasn't been 
> forwarded thru the tunnel.

Is the client side firewalled also? Basically callbacks work by running 
a DRb server on the client, which the server then connects back to. If 
your client is firewalled, the server won't be able to connect to your 
client.


> Is there an easy solution to this problem? Other than avoid using 
> yield, that is...

DRbFire might interest you:

   http://rubyforge.org/projects/drbfire/

It's still very much in development, but it allows bi-directional 
communication through a firewall. It's more oriented towards 
circumventing client-side firewalls, but in your case I think it would 
work fine if you just forwarded the additional port it needs (your 
normal DRb port + 1).

I'd love some outside feedback on how it works (or doesn't work) for 
you. Documentation is minimal at this point, consisting only of a 
sample client and server (and tests), but it's pretty simple to use, 
and you're welcome to drop me an email with any questions you have.

HTH,


Nathaniel

<:((><