[Pymoul-svn] SF.net SVN: pymoul: [155] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
From: <ti...@us...> - 2007-02-07 15:01:57
|
Revision: 155 http://pymoul.svn.sourceforge.net/pymoul/?rev=155&view=rev Author: tiran Date: 2007-02-07 07:01:15 -0800 (Wed, 07 Feb 2007) Log Message: ----------- Fix for Windows socket error issue Modified Paths: -------------- pymoul/trunk/src/moul/qt/mainwindow.py pymoul/trunk/src/moul/server/ping.py Modified: pymoul/trunk/src/moul/qt/mainwindow.py =================================================================== --- pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-07 13:28:12 UTC (rev 154) +++ pymoul/trunk/src/moul/qt/mainwindow.py 2007-02-07 15:01:15 UTC (rev 155) @@ -40,6 +40,7 @@ from moul.osdependent import isMoulRunning from moul.server.ping import ServerList from moul.server.ping import isSocketError +from moul.server.ping import fmtSocketError from moul.time.cavern import CavernTime from moul.qt.localization import LocalizationContainer @@ -498,15 +499,17 @@ name = server.name dns = server.dns() if isSocketError(dns): + errno, msg = fmtSocketError(dns) self.emit(SIGNAL("dnserror(const QString&, int, const QString&)"), - name, dns.args[0], dns.args[1]) + name, errno, msg) continue self.emit(SIGNAL("dns(const QString&, float)"), name, dns) ping = server.portping() if isSocketError(ping): + errno, msg = fmtSocketError(dns) self.emit(SIGNAL("pingerror(const QString&, int, const QString&)"), - name, ping.args[0], ping.args[1]) + name, errno, msg) continue self.emit(SIGNAL("ping(const QString&, float)"), name, ping) Modified: pymoul/trunk/src/moul/server/ping.py =================================================================== --- pymoul/trunk/src/moul/server/ping.py 2007-02-07 13:28:12 UTC (rev 154) +++ pymoul/trunk/src/moul/server/ping.py 2007-02-07 15:01:15 UTC (rev 155) @@ -28,6 +28,29 @@ def isSocketError(stat): return isinstance(stat, socket.error) +def fmtSocketError(exc): + """Formats the output of a socket error + + @param exc: a socket exception + @type. exc: socket.error instance + @return: errno, msg + @rtype: tuple (int, str) + """ + errno, msg = -1, '' + if isinstance(exc, socket.timeout): + msg = str(exc) + elif isinstance(exc, socket.gaierror): + # address-related errors + errno, msg = exc[0], exc[1] + elif isinstance(exc, socket.herror): + # address-related errors using h_errno + errno, msg = exc[0], exc[1] + elif isinstance(exc, socket.error): + errno, msg = exc[0], exc[1] + else: + msg = str(exc) + return errno, msg + class Server(object): """A server object """ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |