durusmail: qp: specifying host for scgi, durus, etc.
specifying host for scgi, durus, etc.
2006-03-30
2006-03-30
Re: specifying host for scgi, durus, etc.
2006-03-31
2006-03-31
2006-03-31
2006-03-31
2006-03-31
2006-03-31
2006-04-01
2006-04-01
2006-04-01
2006-04-01
2006-04-01
2006-04-01
2006-04-01
2006-04-02
specifying host for scgi, durus, etc.
mario ruggier
2006-04-01
On Mar 31, 2006, at 12:55 PM, David Binger wrote:

> Okay, I see that the behavior really is different on your FreeBSD
> machines
> than it is on OS X or Linux.  We need to figure out how to localize
> those other
> services on FreeBSD.  The Durus server, in particular, must not be
> available on a public interface.

Here, just for the hack of it, is one fun way to workaround this...

Simply to check on each request if durus server is up, and restart it
if not, and subsequently reset the connection on each publisher as
needed. This of course bypasses the self-defense auto-shutdown
mechanism...

     def process_hit(self, hit):
         try:
             self.get_connection().abort()
         except socket.error:
             from sys import exc_info
             socket_err_code = exc_info()[1].args[0]
             if socket_err_code == 54:
                 print 'Connection reset by peer... restarting durus
server'
                 self.site.stop_durus()
                 self.site.start_durus()
             if socket_err_code in (32,54):
                 print 'Broken pipe... resetting durus connection'
                 durus_address = self.site.get_durus_address()
                 if durus_address:
                     durus_host, durus_port = durus_address
                     from durus.client_storage import ClientStorage
                     from durus.connection import Connection
                     self.connection = Connection(
                         ClientStorage(port=durus_port, host=durus_host),
                         cache_size=self.site.get_durus_cache_size() )
         qp.pub.publish.Publisher.process_hit(self, hit)

reply