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
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)
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:
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))