view roundup/cgi/TAL/__init__.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 8c2402a78bb0
children
line wrap: on
line source

##############################################################################
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
#
##############################################################################
""" Template Attribute Language package """

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