view roundup/exceptions.py @ 3808:36eb9e8faf30

Real handling of network errors. Fix for correctly ignoring net errors: It seems that (at least in my installed Debian version of python2.4) socket.error does not have an errno attribute but is simply a tuple of (errno, strerror). So we now try to get errno first and if this fails we try to use err [0]. This works for a simple test-script to which I can connect with telnet on port 4711 -- it will correctly detect errno.EPIPE if I terminate the telnet session: #!/usr/bin/python2.4 import socket import errno from SocketServer import TCPServer, BaseRequestHandler class Server (BaseRequestHandler) : def handle (self) : self.file = self.request.makefile () try : while True : print >> self.file, "Testing..." except socket.error, err : print getattr (err, 'errno', "Has no errno") print err [0] print err [0] == errno.EPIPE raise # end def handle # end class Server server_address = ('', 4711) s = TCPServer (server_address, Server) s.serve_forever () Sorry for the verbose log-message but I hope to document my debugging activities
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Tue, 16 Jan 2007 10:16:08 +0000
parents 3fd672293712
children 042ace5ddb7c
line wrap: on
line source

#$Id: exceptions.py,v 1.1 2004-03-26 00:44:11 richard Exp $
'''Exceptions for use across all Roundup components.
'''

__docformat__ = 'restructuredtext'

class Reject(Exception):
    '''An auditor may raise this exception when the current create or set
    operation should be stopped.

    It is up to the specific interface invoking the create or set to
    handle this exception sanely. For example:

    - mailgw will trap and ignore Reject for file attachments and messages
    - cgi will trap and present the exception in a nice format
    '''
    pass

# vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/