~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/chat.py

  • Committer: David Coles
  • Date: 2010-02-18 02:17:23 UTC
  • Revision ID: coles.david@gmail.com-20100218021723-ruxhtoj61rbv4ie7
ivle.console should capture ivle.chat.ProtocolErrors as a ConsoleError

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
    def __str__(self):
40
40
        return repr(self.final_response)
41
41
 
 
42
class ProtocolError(Exception):
 
43
    """Exception thrown when client violates the the chat protocol"""
 
44
    pass
42
45
 
43
46
def start_server(port, magic, daemon_mode, handler, initializer = None):
44
47
    # Attempt to open the socket.
156
159
    while c != ':':
157
160
        # Limit the Netstring to less than 10^10 bytes (~1GB).
158
161
        if len(size_buffer) >= 10:
159
 
            raise ValueError("Not valid Netstring: More than 10^10 bytes")
 
162
            raise ProtocolError(
 
163
                    "Could not read Netstring size in first 9 bytes: '%s'"%(
 
164
                    ''.join(size_buffer)))
160
165
        size_buffer.append(c)
161
166
        c = sok.recv(1)
162
167
    try:
163
168
        # Message should be length plus ',' terminator
164
169
        recv_expected = int(''.join(size_buffer)) + 1
165
170
    except ValueError, e:
166
 
        raise ValueError("Not valid Netstring: '%s'"%blk)
 
171
        raise ProtocolError("Could not decode Netstring size as int: '%s'"%(
 
172
                ''.join(size_buffer)))
167
173
 
168
174
    # Read data
169
175
    buf = []
177
183
 
178
184
    # Did we receive the correct amount?
179
185
    if recv_data[-1] != ',':
180
 
        raise ValueError("Not valid Netstring: Did not end with ','")
 
186
        raise ProtocolError("Netstring did not end with ','")
181
187
    buf.append(recv_data[:-1])
182
188
 
183
189
    return ''.join(buf)