Univention Bugzilla – Attachment 5504 Details for
Bug 32818
Traceback: "Connection reset by peer" on network reconfiguration not handled
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Catch socker error
32818_umc-module-error.diff (text/plain), 4.83 KB, created by
Philipp Hahn
on 2013-10-08 12:53:06 CEST
(
hide
)
Description:
Catch socker error
Filename:
MIME Type:
Creator:
Philipp Hahn
Created:
2013-10-08 12:53:06 CEST
Size:
4.83 KB
patch
obsolete
>From 6235645dde0ab8f763424d31331d8dce803e21a5 Mon Sep 17 00:00:00 2001 >Message-Id: <6235645dde0ab8f763424d31331d8dce803e21a5.1381229532.git.hahn@univention.de> >From: Philipp Hahn <hahn@univention.de> >Date: Tue, 8 Oct 2013 12:25:07 +0200 >Subject: [PATCH] Bug #32818: UMC: Handle connection close >Organization: Univention GmbH, Bremen, Germany > >On network re-configuration the UMC servers are restarted, which close >the connection. Handle that more gracefully to not block the browser. >--- > .../ucs-3.2-0/doc/changelog/changelog-3.2.xml | 4 ++++ > .../univention-management-console/debian/changelog | 1 + > .../management/console/protocol/modserver.py | 21 +++++++++++++------- > 3 files changed, 19 insertions(+), 7 deletions(-) > >diff --git a/branches/ucs-3.2/ucs-3.2-0/doc/changelog/changelog-3.2.xml b/branches/ucs-3.2/ucs-3.2-0/doc/changelog/changelog-3.2.xml >index 8b3c2f4..e876047 100644 >--- a/branches/ucs-3.2/ucs-3.2-0/doc/changelog/changelog-3.2.xml >+++ b/branches/ucs-3.2/ucs-3.2-0/doc/changelog/changelog-3.2.xml >@@ -710,6 +710,10 @@ > <listitem><simpara> > The command <command>dh-umc-module-build</command> no longer prints a warning message for a failed import and aborts on errors when building UMC module packages (<ulink url="&ucsbug;31123">Bug 31123</ulink>, <ulink url="&ucsbug;32814">Bug 32814</ulink>). > </simpara></listitem> >+ >+ <listitem><simpara> >+ UMC modules now handle the server restart more gracefully (<ulink url="&ucsbug;32814">Bug #32814</ulink>). >+ </simpara></listitem> > </itemizedlist> > </section> > >diff --git a/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/debian/changelog b/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/debian/changelog >index c6d0526..6115c29 100644 >--- a/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/debian/changelog >+++ b/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/debian/changelog >@@ -2,6 +2,7 @@ univention-management-console (6.0.16-1) unstable; urgency=low > > * Remove warning (Bug #31123) > * Abort on error (Bug #32814) >+ * Handle connection close (Bug #32818) > > -- Philipp Hahn <hahn@univention.de> Tue, 08 Oct 2013 10:25:50 +0200 > >diff --git a/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/src/univention/management/console/protocol/modserver.py b/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/src/univention/management/console/protocol/modserver.py >index ac5fe0a..e22256a 100644 >--- a/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/src/univention/management/console/protocol/modserver.py >+++ b/branches/ucs-3.2/ucs-3.2-0/management/univention-management-console/src/univention/management/console/protocol/modserver.py >@@ -51,6 +51,9 @@ _ = NullTranslation( 'univention.management.console' ).translate > import locale > import notifier > import notifier.threads as threads >+from socket import error as SocketError >+import errno >+ > > class ModuleServer( Server ): > """Implements an UMC module server >@@ -98,7 +101,7 @@ class ModuleServer( Server ): > self.__handler = self.__module.Instance() > self.__handler.signal_connect( 'success', notifier.Callback( self._reply, True ) ) > self.__handler.signal_connect( 'failure', notifier.Callback( self._reply, True ) ) >- except Exception, e: >+ except Exception: > import traceback > traceback.print_exc() > sys.exit( 5 ) >@@ -126,10 +129,14 @@ class ModuleServer( Server ): > notifier.timer_remove( self.__timer ) > self.__timer == None > >- data = socket.recv( RECV_BUFFER_SIZE ) >+ try: >+ data = socket.recv( RECV_BUFFER_SIZE ) >+ except SocketError, ex: >+ MODULE.error('Failed connection: %s' % (errno.errorcode.get(ex.errno, ex.errno),)) >+ data = None > > # connection closed? >- if not len( data ): >+ if not data: > socket.close() > # remove socket from notifier > return False >@@ -143,7 +150,7 @@ class ModuleServer( Server ): > self.__buffer = msg.parse( self.__buffer ) > MODULE.info( "Received request %s" % msg.id ) > self.handle( msg ) >- except IncompleteMessageError, e: >+ except IncompleteMessageError: > MODULE.info( 'Failed to parse incomplete message' ) > except ( ParseError, UnknownCommandError ), e: > MODULE.error( 'Failed to parse message: %s' % str( e ) ) >@@ -220,7 +227,7 @@ class ModuleServer( Server ): > if 'acls' in msg.options and 'commands' in msg.options and 'credentials' in msg.options: > try: > self.__handler.init() >- except BaseException, e: >+ except BaseException: > import traceback, sys > resp.status = MODULE_ERR > exc_info = sys.exc_info() >@@ -272,8 +279,8 @@ class ModuleServer( Server ): > length = len( self.__queue ) > try: > ret = self.__comm.send( self.__queue ) >- except socket.error, e: >- if e[0] == 11: >+ except SocketError, ex: >+ if ex.errno == errno.EWOULDBLOCK: > return True > raise > >-- >1.7.10.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 32818
: 5504