def _make_closer(self, obj, client):
def close():
- print(repr(self), repr(obj))
- self.lib.parent.log(repr(self), '?', 'Closing child socket %d' % (client.fileno()))
+ self.lib.parent.log(repr(self), '?', 'Closing child socket #%d' % (client.fileno()))
try:
obj.closing()
except AttributeError:
client, addr = self.sock.accept()
obj = self.cls(client)
obj.close = self._make_closer(obj, client)
- self.lib.parent.log(repr(self), '?', 'New connection %d from %s' % (client.fileno(), addr))
+ self.lib.parent.log(repr(self), '?', 'New connection #%d from %s' % (client.fileno(), addr))
self.clients.append((client,obj))
self.lib.parent.newfd(obj, client.fileno())
return []
'license': 'public domain',
'compatible': [0],
'depends': [],
- 'softdeps': ['help'],
+ 'softdeps': [],
}
# preamble
def getdata(self):
recvd = self.sock.recv(8192)
- if recvd == b"":
+ if recvd == b"": # EOF
if len(self.buffer) != 0:
# Process what's left in the buffer. We'll get called again after.
remaining_buf = self.buffer.decode('utf-8', 'backslashreplace')
peer = self.sock.getpeername()
bot = lib.parent.randbot()
maxlen = bot.maxmsglen() - len("PRIVMSG :") - len(self.chan)
- bot.msg(self.chan, "%s:%d says:" % peer)
+ lib.parent.log(str(self), 'I', line)
while len(line) > maxlen:
- bot.msg(self.chan, line[0:maxlen])
- line = line[maxlen:]
+ cutat = line.rfind(' ', 0, maxlen)
+ if cutat == -1:
+ cutat = maxlen
+ bot.msg(self.chan, line[0:cutat])
+ line = line[cutat:].strip()
bot.msg(self.chan, line)
def send(self, line):
return self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
except:
return None
+
+ def __str__(self):
+ return '%s#%d' % (__name__, self.sock.fileno())
+ def __repr__(self):
+ return '<%s #%d %s:%d>' % ((__name__, self.sock.fileno())+self.sock.getpeername())