]> jfr.im git - erebus.git/blobdiff - erebus.py
subtext - security - only allow digits to be backslashed
[erebus.git] / erebus.py
index 9c9f46fee900ce31943abd6a5c22482ad42d91db..fb6fcc80fc703480887c2be351c368fb1a7e5669 100644 (file)
--- a/erebus.py
+++ b/erebus.py
@@ -7,7 +7,7 @@
 from __future__ import print_function
 
 import os, sys, select, time, traceback, random, gc
-import bot, config, ctlmod
+import bot, config, ctlmod, modlib
 
 class Erebus(object): #singleton to pass around
        APIVERSION = 0
@@ -241,6 +241,8 @@ class Erebus(object): #singleton to pass around
                self.bots[nick.lower()] = obj
 
        def newfd(self, obj, fileno):
+               if not isinstance(obj, modlib.Socketlike):
+                       raise Exception('Attempted to hook a socket without a class to process data')
                self.fds[fileno] = obj
                if self.potype == "poll":
                        self.po.register(fileno, select.POLLIN)
@@ -426,7 +428,7 @@ def loop():
                try:
                        data = main.fd(fileno).getdata()
                except:
-                       main.log('*', '!', 'Super-mega-emergency: getdata raised exception for socket %d' % (fileno))
+                       main.log('*', '!', 'Error receiving data: getdata raised exception for socket %d, closing' % (fileno))
                        traceback.print_exc()
                        data = None
                if data is None:
@@ -438,7 +440,7 @@ def loop():
                                try:
                                        main.fd(fileno).parse(line)
                                except:
-                                       main.log('*', '!', 'Super-mega-emergency: parse raised exception for socket %d data %r' % (fileno, line))
+                                       main.log('*', '!', 'Error receiving data: parse raised exception for socket %d data %r, ignoring' % (fileno, line))
                                        traceback.print_exc()
        if main.mustquit is not None:
                main.log('*', '!', 'Core exiting due to: %s' % (main.mustquit))