Merge lp:~stefanor/ibid/network-exceptions-525213 into lp:~ibid-core/ibid/old-trunk-1.6

Proposed by Stefano Rivera
Status: Merged
Approved by: Jonathan Hitchcock
Approved revision: not available
Merged at revision: 903
Proposed branch: lp:~stefanor/ibid/network-exceptions-525213
Merge into: lp:~ibid-core/ibid/old-trunk-1.6
Diff against target: 119 lines (+42/-50)
2 files modified
ibid/plugins/gameservers.py (+41/-49)
ibid/plugins/social.py (+1/-1)
To merge this branch: bzr merge lp:~stefanor/ibid/network-exceptions-525213
Reviewer Review Type Date Requested Status
Keegan Carruthers-Smith Approve
Jonathan Hitchcock Approve
Michael Gorven Approve
Review via email: mp+20177@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Michael Gorven (mgorven) :
review: Approve
Revision history for this message
Jonathan Hitchcock (vhata) :
review: Approve
Revision history for this message
Keegan Carruthers-Smith (keegan-csmith) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ibid/plugins/gameservers.py'
2--- ibid/plugins/gameservers.py 2010-01-18 23:20:33 +0000
3+++ ibid/plugins/gameservers.py 2010-02-25 21:03:17 +0000
4@@ -44,11 +44,7 @@
5
6 @match(r'^(?:dota\s+players|who(?:\'s|\s+is)\s+(?:playing\s+dota|on\s+bnet))$')
7 def dota_players(self, event):
8- try:
9- users = self.bnet_players('W3XP')
10- except socket.error:
11- event.addresponse(u"Sorry, I couldn't contact the server. Maybe it's down")
12- return
13+ users = self.bnet_players('W3XP')
14 if users:
15 event.addresponse(u'The battlefield contains %s', human_join(users))
16 else:
17@@ -64,49 +60,45 @@
18
19 @match(r'^(?:(?:cs|counter[\s-]*strike)\s+players|who(?:\'s|\s+is)\s+(?:playing|on)\s+(?:cs|counter[\s-]*strike))$')
20 def cs_players(self, event):
21- try:
22- server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
23-
24- server.sendto('\xFF\xFF\xFF\xFFdetails', (self.cs_host, self.cs_port))
25- server.settimeout(5)
26- data = server.recv(16384)
27-
28- assert data.startswith('\xFF\xFF\xFF\xFFm')
29- data = data[5:]
30-
31- address, hostname, map, mod, modname, details = data.split('\x00', 5)
32-
33- details = details[:5] # We don't care about the rest
34- clientcount, clientmax, protocol, type, os = struct.unpack('<3Bcc', details)
35-
36- if clientcount == 0:
37- event.addresponse(u'Nobody. Everyone must have lives...')
38- return
39-
40- server.sendto('\xFF\xFF\xFF\xFFplayers', (self.cs_host, self.cs_port))
41- data = server.recv(16384)
42-
43- assert data.startswith('\xFF\xFF\xFF\xFF')
44- data = data[6:]
45-
46- players = []
47- while data:
48- player = {}
49- data = data[1:]
50- player['nickname'], data = data.split('\x00', 1)
51- player['fragtotal'] = struct.unpack('<i', data[:4])[0]
52- data = data[8:]
53- players.append(player)
54-
55- players.sort(key=lambda x: x['fragtotal'], reverse=True)
56- event.addresponse(u'There are %(clients)i/%(clientmax)s players playing %(map)s: %(players)s', {
57- 'clients': clientcount,
58- 'clientmax': clientmax,
59- 'map': map,
60- 'players': human_join(u'%s (%i)' % (p['nickname'], p['fragtotal']) for p in players),
61- })
62-
63- except socket.error:
64- event.addresponse(u"Sorry, I couldn't contact the server. Maybe it's down")
65+ server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
66+
67+ server.sendto('\xFF\xFF\xFF\xFFdetails', (self.cs_host, self.cs_port))
68+ server.settimeout(5)
69+ data = server.recv(16384)
70+
71+ assert data.startswith('\xFF\xFF\xFF\xFFm')
72+ data = data[5:]
73+
74+ address, hostname, map, mod, modname, details = data.split('\x00', 5)
75+
76+ details = details[:5] # We don't care about the rest
77+ clientcount, clientmax, protocol, type, os = struct.unpack('<3Bcc', details)
78+
79+ if clientcount == 0:
80+ event.addresponse(u'Nobody. Everyone must have lives...')
81+ return
82+
83+ server.sendto('\xFF\xFF\xFF\xFFplayers', (self.cs_host, self.cs_port))
84+ data = server.recv(16384)
85+
86+ assert data.startswith('\xFF\xFF\xFF\xFF')
87+ data = data[6:]
88+
89+ players = []
90+ while data:
91+ player = {}
92+ data = data[1:]
93+ player['nickname'], data = data.split('\x00', 1)
94+ player['fragtotal'] = struct.unpack('<i', data[:4])[0]
95+ data = data[8:]
96+ players.append(player)
97+
98+ players.sort(key=lambda x: x['fragtotal'], reverse=True)
99+ event.addresponse(u'There are %(clients)i/%(clientmax)s players playing %(map)s: %(players)s', {
100+ 'clients': clientcount,
101+ 'clientmax': clientmax,
102+ 'map': map,
103+ 'players': human_join(u'%s (%i)' % (p['nickname'], p['fragtotal']) for p in players),
104+ })
105
106 # vi: set et sta sw=4 ts=4:
107
108=== modified file 'ibid/plugins/social.py'
109--- ibid/plugins/social.py 2010-01-18 23:20:33 +0000
110+++ ibid/plugins/social.py 2010-02-25 21:03:17 +0000
111@@ -94,7 +94,7 @@
112 event.addresponse(u'That %s is private', service['name'])
113 elif e.code == 404:
114 event.addresponse(u'No such %s', service['name'])
115- else:
116+ elif e.code == 500:
117 event.addresponse(u'I can only see the Fail Whale')
118
119 @handler

Subscribers

People subscribed via source and target branches