[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.
|