it /should/ always be a string anyway, but sometimes things break with
a TypeError that it is an int instead of the expected string and hangs
up the bot.
unbans did send the repr() of the ban list, and IrcMsg.__hash__ did try to hash a list.
Conflicts:
src/version.py
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 998819da58aa79858d9d683c345d8dac0f49b721)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Closes: Sf#3121298
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit f6f9e654cb5801baa05adfe141df640a29dc3c90)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
This also fixes a long-standing failing Misc test since it was relying on the
receivedAt tag.
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 4ddfae427f9846c77d72cbb3fe3b6a8cdef658e9)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Closes: Sf#3430008
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 360a2036ac26d78c3f98db37239da9987f5c326a)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 4833976294805763f7f7ebfd6adaa04864c2b500)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit d6336421e0940120005b73676baf20560f4f8c78)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 4232e40e262cbbdb675b1cf315c43f576d8b1f43)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Signed-off-by: James McCoy <jamessan@users.sourceforge.net>
(cherry picked from commit 3bfda3cc7ac52ff0fd13150f044f9b5b9c4f03e2)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Closes: Sf#3075891
Signed-off-by: James McCoy <vega.james@gmail.com>
(cherry picked from commit b23480b915682eb35b77bf3b688c731eb7c8d72e)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
At a minimum, the message gives us the server name, ircd version, supported
umodes, and supported channel modes. Add the umodes and channel modes to
self.supported.
Some IRCds (e.g., hybrid and ircd-seven) have an extra arg which seems to be
the channel modes that require arguments.
Signed-off-by: James McCoy <vega.james@gmail.com>
(cherry picked from commit c9e548bdd926f1f4542a5b0121a0b9251706d36b)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 4661acb3a3e1f6bd5773ead9aa290995cfc2bfa4)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Otherwise, when a site would take a long time to respond, the thread would hang for quite a while.
also needed to mod src/utils/web.py to take the timeout arg.
When noJoinsUntilIdentified config is true, the bot holds join messages in a 'waitingJoins' list, and processes them
once nickserv identification comes through. The problem was that when the bot is configured to join multiple networks,
join messages from different networks would get appended to the same list, without any differentiation by which message
belongs to which network. Thus, if there are messages waiting for multiple networks, it would often be the case that
whichever network got identification done first, would 'pick up' other network's join messages.
This fix stores the network name along with the join messages in the list, and has each network pick out only its own
join messages.
Closes: Sf#3070285
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 0fd6a84632ce03731d2f857f627d8990cd87e4f9)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Define utils.python.glob2re based on the Python version being used.
Use glob2re in Todo and Note plugins.
Closes: Sf#3059292
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit b0575cec885d2576b7ff5c7b302d4746b7c5a482)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Since load/reload was the only place where case mattered for plugins, and it tripped up
a lot of new users, this should be a nice bit of usability improvement.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 166f32dcb02eab58659882fb003502c1e990797a)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
otherwise, we have to block for $smalldelay between putting and getting the item, since queue putting is not instantaneous
and sometimes we would get 'nothing returned' instead of the timeout message.
This is the only way to limit the execution time of a possibly long-running python statement.
Use this on String.re, due to the possibility of pathologically long re matching in python.
This allows us to remove the 'trusted-only' restriction on string.re.
In the future, this should probably be used in other places that take user-supplied regexps,
such as 'misc last --regexp', for example, as well as other potentially long-running tasks
that can block the bot.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit c10d964604f564fc29d44a71ea04eb2c8569531c)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
All ircmsgs that takeMsg will return should be processed each time
checkIrcForMsgs is called since there may be multiple available in the
fastqueue.
Reduced the time between calls of checkIrcForMsgs so the delay between
normally queued ircmsgs stays close to the configured throttleTime.
Closes: Sf#3018148
(cherry picked from commit adc5d62bbf6b89631ab25e9b5f5707bde0b06709)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Users were occasionally hitting a situation where the socket had errored,
causing a reconnect, but the socket wasn't closed nor the driver marked as
disconnected. This resulted in run() continuing to try and use the driver,
which would cause another error, schedule another reconnect, log an error, ad
infinitum.
Closes: Sf#2965530
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit a278d17f2bec3697987cbd403594393a4fb30021)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Closes: Sf#2998820
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit f03a3f6c8529c15042908d826235e46123cd29e2)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Topics now persist between restarts.
Rationale: Useful when reloading/restarting; previously the topics would
be just forgotten. Don't use database, as that would be an unnecessary
overkill and in any case not needed.
(Also, remove the unused `re' module import.)
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 6520d1f2829f623bc8cc845e413fc18c6584b64b)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
Regexp.error can't directly call Value.error because it's providing extra
information, so it needs to build the InvalidRegistryValue exception itself
and raise it.
Closes: Sf#2985241
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit ef8bd817e8b62ede76aa7501a9a8d69af7408efc)
Signed-off-by: Daniel Folkinshteyn <nanotube@users.sourceforge.net>
This involved also updating src/conf.py to look for sqlite3 and add it to supybot.conf.databases list,
since karma uses the plugins.DB() constructor for its database, which checks the available databases list.