]> jfr.im git - erebus.git/commitdiff
some socket fixes
authorJohn Runyon <redacted>
Sun, 26 Nov 2023 00:07:03 +0000 (17:07 -0700)
committerJohn Runyon <redacted>
Sun, 26 Nov 2023 00:07:03 +0000 (17:07 -0700)
modlib.py
modules/basic_socket.py

index eeb7c4ea2acd353d9e6f94abdfe7e1c9baabedfa..91e05843dd306a49adc15596806d6d2ed3aa5d51 100644 (file)
--- a/modlib.py
+++ b/modlib.py
@@ -258,8 +258,7 @@ class _ListenSocket(object):
 
        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:
@@ -274,7 +273,7 @@ class _ListenSocket(object):
                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 []
index bfd6b72cd12ecca2cef85cb8cf3418d2b7adebc0..03f7323e6c848c69183887f3d93a824f952b0185 100644 (file)
@@ -8,7 +8,7 @@ modinfo = {
        'license': 'public domain',
        'compatible': [0],
        'depends': [],
-       'softdeps': ['help'],
+       'softdeps': [],
 }
 
 # preamble
@@ -43,7 +43,7 @@ class BasicServer(object):
 
        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')
@@ -67,10 +67,13 @@ class BasicServer(object):
                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):
@@ -81,3 +84,8 @@ class BasicServer(object):
                        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())