From: Nathaniel Talbott Date: 2004-01-16T09:29:59+09:00 Subject: Re: drb, firewall, ssh tunneling, and yield 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 <:((><