James Lu
bc9863d9e0
Make reconnecting a bit less... broken
2015-07-17 16:20:41 -07:00
James Lu
fdea348cbe
move hook calling out of pr/insp and into Irc
2015-07-17 16:09:50 -07:00
James Lu
df595c65a1
fix SQUIT not respecting autoconnect delay
2015-07-17 16:01:51 -07:00
James Lu
95853924ad
Revert "protocols/: thread calls to each event hook to prevent blocking globally"
...
This reverts commit 99fd6060a7
, which caused a bunch of race conditions in relay :/
Ref #59 .
2015-07-17 15:13:57 -07:00
James Lu
f41e1a2eb5
Fixes for connection handling?
...
XXX: using SQUIT on the PyLink server doesn't respect autoconnect delays; why?
2015-07-17 15:08:24 -07:00
James Lu
836d0e9701
Irc: wrap (re)connecting in a while loop instead of calling it recursively
...
Also, remove unnecessary comments / ENDBURST hook from relay.
Ping handling seems to work fine now! Closes #57 . Closes #42 .
2015-07-17 14:37:07 -07:00
James Lu
99fd6060a7
protocols/: thread calls to each event hook to prevent blocking globally
...
Closes #59 .
2015-07-17 14:35:02 -07:00
James Lu
9bef93c341
More stuff for PINGing uplink and autoreconnect ( #42 #59 #57 )
...
Doesn't quite work yet; still blocks everything on disconnect for some reason...
2015-07-17 13:41:14 -07:00
James Lu
0aa2f98705
Move client spawning, command / KILL / KICK handling outside the protocol module
...
New plugin 'coreplugin' takes care of command/KILL/KICK handling, while client spawning is moved into Irc.spawnMain() and is used by the former.
Closes #33 .
2015-07-16 21:52:44 -07:00
James Lu
c6c24c242c
Irc: fixes in timeout detection
2015-07-16 19:34:05 -07:00
James Lu
f1ef6f9e15
Irc: catch ConnectionError in both run() and send()
...
Part of #42 .
2015-07-16 16:49:16 -07:00
James Lu
73c625a429
pr/insp: don't raise KeyError when removing channel from user fails
2015-07-16 16:48:54 -07:00
James Lu
2a586a6dba
relay: don't send empty MODE commands if there are no supported modes left after filtering
2015-07-16 16:27:17 -07:00
James Lu
cf32461d8e
relay: Only spawn clients if they share a channel, and quit them when they leave all shared channels
...
Closes #50 .
2015-07-16 12:25:42 -07:00
James Lu
40fd9e37a0
relay: don't spawn tagged clones for the internal PyLink client
2015-07-16 12:25:33 -07:00
James Lu
d97fce8205
IrcUser & pr/insp: Implement user channel tracking
2015-07-16 12:20:40 -07:00
James Lu
35f1c88a4e
relay: add hooks for CHGHOST / CHGIDENT / CHGNAME
...
Closes #49 .
2015-07-16 11:53:40 -07:00
James Lu
f9d82153bb
pr/insp: map FIDENT/FHOST/FNAME hooks to their CHG* counterparts
2015-07-15 23:23:46 -07:00
James Lu
643218efce
README: fix link to issue tracker
2015-07-15 23:15:08 -07:00
James Lu
2f38b2b38d
relay: handle squit, quitting the relevant relay pseudoclients with a fake netsplit message
...
This is hardcoded to *.net *.split, but it may change to show the split servers in the future...
2015-07-15 19:09:10 -07:00
James Lu
e413a21e68
pr/insp: send the list of affected users in handle_squit
2015-07-15 19:08:49 -07:00
James Lu
798476c850
pr/insp: don't crash when a server sends TOPIC
2015-07-15 19:08:36 -07:00
James Lu
c22c187717
Update README.md
2015-07-15 18:50:29 -07:00
James Lu
2106b8da3a
main: add a note about irc.connected.wait() and maxnicklen being set
2015-07-15 14:00:40 -07:00
James Lu
cd244ee89b
relay: block until irc.maxnicklen is set, and remove check for "nick already in use" for internal clients
...
Closes #48 . This fixes the edge case where, if a person with a long, cut-off nick changes to another long nick, and the resulting normalized nick is the same,
normalizeNick will start incrementing the separator anyway. The correct behavior is to NOT send any nick changes if the old (normalized) nick and the new nick
match.
2015-07-15 13:53:14 -07:00
James Lu
6e37e1c05d
make Irc.connected a threaded event object, setting it to True ONLY when we receive server capabilities from our uplink
...
The previous behavior set this to True as soon as we ran connect(), but this caused problems because the default capabilities (i.e. nicklen)
that Irc() initializes won't match the real value of the network.
2015-07-15 13:49:12 -07:00
James Lu
8d914720b3
It might be useful to expose such options in the example conf, you know
2015-07-15 11:53:07 -07:00
James Lu
293bfff813
main: thread Irc.connect() and begin work on autoreconnection
2015-07-15 11:52:36 -07:00
James Lu
bbe71e22ab
relay: fixes for NICK and TOPIC propogation
2015-07-15 11:48:26 -07:00
James Lu
e3e643de54
relay: don't try to spawn clients on disconnected networks (those raise errors)
2015-07-15 11:48:03 -07:00
James Lu
4c77ad93d7
relay: fix over-reaching behavior of delink #chan <remotenet> when you're the host
2015-07-15 11:47:06 -07:00
James Lu
0918b2f958
relay: missing line in initializeChannel
2015-07-14 23:29:03 -07:00
James Lu
3a9df57c39
relay: remove unused relay() function; what was that about?
2015-07-14 23:26:56 -07:00
James Lu
5999eedd98
relay: block kills, respawning their targets transparently
...
Closes #47 .
2015-07-14 23:26:52 -07:00
James Lu
13e4cadf2b
relay: add TOPIC support (experimental)
...
Closes #46 .
2015-07-14 23:26:39 -07:00
James Lu
67190d8329
pr/insp: send the user data of the kileld user in handle_kill
2015-07-14 23:23:35 -07:00
James Lu
46e1538bd2
relay: fix #45 - cases when MODE/KICK is sent by a server, not a client
2015-07-14 22:37:50 -07:00
James Lu
ef0436c906
inspircd: merge _sendFromUser and _sendFromServer into _send
...
They do exactly the same thing, just with different variable names. Keeping two of these is useless...
(why didn't I notice this earlier?)
2015-07-14 22:33:56 -07:00
James Lu
8942c2fa08
pr/insp: add kickServer
2015-07-14 22:32:05 -07:00
James Lu
7de8f1509d
relay: factorize getLocalUser, introduce MODE (experimental) and PRIVMSG handler
2015-07-14 19:39:49 -07:00
James Lu
f74e704733
relay: whoops, check for claim properly
2015-07-14 18:27:26 -07:00
James Lu
28f1d4ba19
relay: add a working KICK handler
...
This should block kicks from non-opped remote users, and handle kicks across the relay properly by mapping our pseudoclients to the real targets.
2015-07-14 18:23:19 -07:00
James Lu
79a1ac9006
pr/insp: fix sjoinServer not updating the internal modes list
2015-07-14 18:23:15 -07:00
James Lu
876cf34825
relay: Remove spawning a sub-server for each relay network
...
It introduced bugs, and made the relay code more complicated than it has to be :(
2015-07-14 17:42:17 -07:00
James Lu
a1299676f1
relay: factorize fetching of remote users/SIDs, spawning them if they don't exist
2015-07-14 12:04:05 -07:00
James Lu
994b2961ee
pr/insp: call endburst AFTER the server object is initialized...
...
derp
2015-07-14 12:03:22 -07:00
James Lu
59295f921b
relay: part users on DELINK/DESTROY
2015-07-13 23:29:20 -07:00
James Lu
310a9201e2
relay: fix bugs with removing nonexistant channels in DELINK, and linking a channel multiple times in LINK
2015-07-13 22:54:51 -07:00
James Lu
1cbcec1001
relay: sync modes on initializeChannel as well
2015-07-13 22:42:50 -07:00
James Lu
c11dc769cf
pr/insp: allow explicitly specifying ts in mode*
2015-07-13 22:42:33 -07:00