3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-23 11:12:44 +01:00
Commit Graph

435 Commits

Author SHA1 Message Date
Daniel Oaks
8b79662f1a modes: use secret instead of private, it's the standard these days. fix secret channel hiding in whois 2016-04-14 22:33:38 +10:00
Daniel Oaks
a715882a75 Remove RplCurrentMode NOTICE on successful MODE commands. Fixes #22 2016-04-14 21:53:45 +10:00
Daniel Oaks
4177522e74 modes: Correct mode argument handling, only first param is the modestring 2016-04-14 21:22:17 +10:00
Daniel Oaks
9b32d7d6b8 mode: Parse more advanced mode changes 2016-04-14 18:41:58 +10:00
Daniel Oaks
63f5f34f28 version: Clarify semantic versioning "public API" and reset ver number on Oragono 2016-04-14 15:31:51 +10:00
Daniel Oaks
0ccabead31 cap: Properly suspend registration for CAP negotiation 2016-04-14 11:25:23 +10:00
Daniel Oaks
b028b6929c reply: Include param on RPL_ENDOFWHOIS. Fixes #18 2016-04-14 10:16:32 +10:00
Daniel Oaks
a241ea7dd6 version: Return RPL_ISUPPORT tokens, as standard 2016-04-14 09:55:22 +10:00
Daniel Oaks
3972fc49ed privileges: Add founder/admin/halfop (qah), remove owner (O)
channel owner is from 2812 and unused in the real world
2016-04-14 09:36:02 +10:00
Daniel Oaks
5ee0f1c205 capability: Remove CAP CLEAR as per IRCv3 recommendations, allow CAP command after registration 2016-04-14 07:30:14 +10:00
Daniel Oaks
c3288823af Add native SSL/TLS listener support from @enmand for our new config 2016-04-13 20:45:09 +10:00
Daniel Oaks
8dc2732137 server: Store MOTD in memory rather than reading it from disk every time. Fixes #3 2016-04-13 15:49:30 +10:00
Daniel Oaks
56641ff650 isupport: Don't advertise stuff that's still TODO 2016-04-13 08:59:00 +10:00
Daniel Oaks
78928c0322 isupport: STATUSMSG isn't supported, don't advertise it 2016-04-13 08:58:52 +10:00
Daniel Oaks
a013205fd1 Support network name 2016-04-13 08:58:41 +10:00
Daniel Oaks
c88cd328f8 Very initial RPL_ISUPPORT numeric support 2016-04-13 08:57:34 +10:00
Daniel Oaks
c0c16c72f0 ergonomadic -> oragono. I'm making lots of changes and this is AN EXPERIMENT. I want to differentiate this from Ergonomadic proper 2016-04-13 08:55:37 +10:00
Daniel Oaks
29d80366a6 Use docopt for command-line processing and new YAML configuration format 2016-04-13 08:46:14 +10:00
Daniel Oaks
c705bdaac5 irc/server: MOTD does not need to be clipped at 80 chars, has not been standard for a long while now 2016-04-13 08:46:14 +10:00
Daniel Oaks
7ce62444de strings: Disallow nicknames that mess with the protocol in bad ways 2016-04-12 22:42:17 +10:00
John Soros
65539a593b this is related to https://github.com/fluffle/goirc/pull/71: common irc server behaviour is to reply with an empty + 2016-02-20 22:19:32 -08:00
Roberto Besser
404151fe9d code.google.com is shutting down, change import to use gopkg.in 2016-02-20 18:16:04 -08:00
Robin Burchell
6ad97f7e5d irc: Switch to golang.org versions, not google code versions of dependencies.
This has a few advantages:
* the google code versions are no longer maintained
* the google code versions are using mercurial (which I don't have installed)
2015-07-04 12:19:33 +02:00
Edmund Huber
67a6247377 Merge pull request #14 from edmund-huber/websocket
add support for WebSocket connections
2015-06-09 10:30:04 -07:00
Edmund Huber
02dca1dd89 fix array overrun panic bug, #13 2015-06-06 18:26:28 -07:00
Edmund Huber
a16cc84e41 don't shadow the second error 2015-06-06 16:15:09 -07:00
Edmund Huber
fce54343ea touchups to irc/websocket.go per review comments 2015-06-06 16:11:06 -07:00
Edmund Huber
62302ec92e fail WebSockets with subprotocols here, because gorilla leaves it up for us to deal with subprotocols 2015-06-06 15:19:07 -07:00
Edmund Huber
23d7c81684 comment for CheckOrigin 2015-06-06 14:05:29 -07:00
Niels Freier
6a69a65860 WebSocket layer to be able to connect "web" client
Currently working with a mini irc js implem, the flow:

* PASS
* NICK
* USER
* JOIN
* PRIVMSG

works and the ping/pong timeout keep the communication open.
2015-05-04 09:47:26 +04:00
Edmund Huber
846543c180 try including the prefix in the PONG to a client PING, maybe fix #5 2015-02-19 02:09:25 -08:00
Jeremy Latt
84eed13f1d v1.4.4 2014-04-15 21:25:55 -07:00
Jeremy Latt
4ce4ba31c5 keep track of whether sockets are closed 2014-04-15 12:10:02 -07:00
Jeremy Latt
6c10add399 improve performance by using less goroutines
- get rid of command channel in Client
- get rid of loginTimer; use other timers instead
- move debugging code to debug.go
2014-04-15 12:10:02 -07:00
Jeremy Latt
cab21782b4 fix crash in whowas circular buffer 2014-04-10 11:53:34 -07:00
Jeremy Latt
142bf3d3bb don't async buffer flushing 2014-03-31 10:00:59 -07:00
Edmund Huber
b4edcea6e3 pretty up the notice a bit, and use RplNotice 2014-03-29 19:46:44 +01:00
Edmund Huber
e1c235a9ea fix up MODE behavior to allow /mode <not-your-nick> and show per-channel modes, fixes #29 2014-03-29 19:36:42 +01:00
Jeremy Latt
37e15d7f62 v1.4.1 2014-03-28 14:41:24 -07:00
Jeremy Latt
2e212e3692 Merge pull request #35 from jlatt/fix-goroutine-leak
fix two bugs
2014-03-28 14:41:00 -07:00
Jeremy Latt
2d2e63a1b7 Merge pull request #33 from jlatt/async-write-flush
async all write buffer flushes
2014-03-28 14:34:37 -07:00
Jeremy Latt
b0bb0faadc remove unnecessary String()s; rename parse functions 2014-03-28 14:33:31 -07:00
Jeremy Latt
21a86c3216 fix gcstats debugging command 2014-03-28 13:03:06 -07:00
Jeremy Latt
f32df20a83 get rid of useless assignment 2014-03-28 12:11:01 -07:00
Jeremy Latt
63a46498ce reuse replies where possible 2014-03-27 19:04:34 -07:00
Jeremy Latt
3b12dec207 cleanup 2014-03-27 18:58:12 -07:00
Jeremy Latt
2dc69c7e3d use a Scanner instead of ReadString 2014-03-27 18:53:01 -07:00
Jeremy Latt
5f268e4847 async all write buffer flushes 2014-03-27 18:34:31 -07:00
Jeremy Latt
d696f2313e stop leaking client goroutines; closes #34 2014-03-27 16:49:22 -07:00
Jeremy Latt
c2e3bbe494 fix whois; closes #32 2014-03-27 16:48:13 -07:00
Edmund Huber
2272aae213 spelling and gofmt 2014-03-23 06:50:07 +01:00
Edmund Huber
34b01b115e add a type for CTCP-encoded strings, and NOTICEs for error cases 2014-03-23 06:47:21 +01:00
Edmund Huber
6267b6a40c clean up /theater so that it doesn't need a bunch of pointers and that it reuses channel-scoped-user-modes machinery 2014-03-22 22:25:24 +01:00
Jeremy Latt
bffad06a26 v1.4 2014-03-21 23:25:19 -07:00
Edmund Huber
d5bdc78d55 adding theater-mode, fixes #15 2014-03-20 05:05:18 +01:00
Jeremy Latt
8c44bb9ff3 ONICK command to allow operators to change users' nicks 2014-03-17 12:56:35 -07:00
Jeremy Latt
abf00e22ec LIKE quoting should convert to string for SQL 2014-03-17 12:56:12 -07:00
Jeremy Latt
874f3628c9 fix another Name => string conversion 2014-03-15 19:18:57 -07:00
Jeremy Latt
7a9f1d750b explain why CheckPassword happens in client thread 2014-03-15 15:12:29 -07:00
Jeremy Latt
7db4347419 bind to listening sockets before asyncing 2014-03-13 17:19:39 -07:00
Jeremy Latt
d85e6681d9 move modes code to its own file; fix SQL (un)marshalling 2014-03-13 13:22:38 -07:00
Jeremy Latt
39b7c2a915 Merge remote-tracking branch 'origin/master' into cleanup
Conflicts:
	irc/client.go
	irc/commands.go
	irc/constants.go
	irc/reply.go
	irc/server.go
	irc/types.go
2014-03-13 12:38:44 -07:00
Jeremy Latt
2006aff9f7 break up types.go
- remove old interfaces, move to relevant files
- remove Phase in favor of a boolean flag
2014-03-12 17:52:25 -07:00
Jeremy Latt
0126edc7af move capability handling code to a single file 2014-03-12 17:38:11 -07:00
Jeremy Latt
e15f47c766 move to channel-based logging 2014-03-12 17:17:26 -07:00
Jeremy Latt
77d053ccac get rid of editableCommand 2014-03-12 17:10:48 -07:00
Jeremy Latt
d1a299792e don't buffer channels (except signal channel) 2014-03-12 16:58:11 -07:00
Jeremy Latt
4268c4a936 don't set CapNegotiating for blind CAP REQ 2014-03-12 16:57:15 -07:00
Jeremy Latt
96a108f8da mark unicode normalization with type 2014-03-12 16:45:22 -07:00
Jeremy Latt
97886dd00f relax regex restrictions for nicknames 2014-03-08 20:03:36 -08:00
Jeremy Latt
f1b610e1c1 v1.3 2014-03-08 19:24:55 -08:00
Jeremy Latt
465313c9ac Merge remote-tracking branch 'origin/master' into user-mask
Conflicts:
	irc/types.go
2014-03-08 19:23:10 -08:00
Jeremy Latt
81df7b4a5c comments and improvements for client set 2014-03-08 19:22:04 -08:00
Jeremy Latt
33df043961 fix CAP messages 2014-03-08 14:00:13 -08:00
Jeremy Latt
cf76d2bd77 persist and load channel mask lists 2014-03-07 18:14:39 -08:00
Jeremy Latt
04c30c8c9b channel invite mode/list 2014-03-07 17:36:20 -08:00
Jeremy Latt
cd2042dfea Merge remote-tracking branch 'origin/master' into user-mask 2014-03-07 17:10:14 -08:00
Jeremy Latt
d4093e7f8b mask lists (ban, except, invite) 2014-03-07 17:09:49 -08:00
Jeremy Latt
f56db354ee fix client auth for no password
All clients are authorized if the server lacks a password.
2014-03-06 20:10:02 -08:00
Jeremy Latt
5d46e7d7fa Merge remote-tracking branch 'origin/master' into user-mask
Conflicts:
	irc/reply.go
	irc/server.go
	irc/types.go
2014-03-06 17:44:37 -08:00
Jeremy Latt
4bcd42ff34 Merge pull request #8 from jlatt/cap-protocol
basic capability negotiation
2014-03-06 17:39:12 -08:00
Jeremy Latt
12ae89ca14 minor cleanup/refactoring 2014-03-06 17:07:23 -08:00
Jeremy Latt
adde42a1bf update ClientLookupSet when username changes 2014-03-06 16:53:15 -08:00
Jeremy Latt
76852b0370 implement WHOWAS with a shared ringbuffer 2014-03-06 13:55:40 -08:00
Jeremy Latt
41a6027d4e move ClientLookupSet to its own file 2014-03-06 13:10:54 -08:00
Jeremy Latt
b2055595e1 WHOWAS command 2014-03-06 12:14:21 -08:00
Jeremy Latt
69cdad45ac partially-working sqlite-based usermasks 2014-03-06 11:56:32 -08:00
Jeremy Latt
832a5e1e19 allow empty server password 2014-03-06 11:00:48 -08:00
Jeremy Latt
d54f530d13 Merge remote-tracking branch 'origin/master' into cap-protocol
Conflicts:
	irc/server.go
2014-03-06 10:34:50 -08:00
Jeremy Latt
5c6f8ff92a improve logging 2014-03-05 23:07:55 -08:00
Jeremy Latt
fa5b1e6cf7 Merge pull request #9 from jlatt/gcfg
switch from JSON to gcfg config files
2014-03-05 23:02:22 -08:00
Jeremy Latt
04bb79a610 fix invite message to clients 2014-03-05 22:55:22 -08:00
Jeremy Latt
d6688a3047 allow | in nicks 2014-03-02 13:10:47 -08:00
Jeremy Latt
0874692aa8 send proper replies for cap protocol 2014-03-02 12:54:48 -08:00
Jeremy Latt
92e7a7961f notify on more signals 2014-03-02 11:51:29 -08:00
Jeremy Latt
fa165a9d74 Merge remote-tracking branch 'origin/master' into gcfg
Conflicts:
	ergonomadic.go
	irc/config.go
	irc/server.go
2014-03-02 11:42:43 -08:00
Jeremy Latt
2340464265 Merge pull request #10 from jlatt/cleanup
cleanup
2014-03-02 11:37:06 -08:00
Jeremy Latt
6aa6f0aeaa notify clients when the server shuts down 2014-03-02 11:36:00 -08:00
Jeremy Latt
8f0d2b89ee v.1.2.12 2014-03-02 11:06:02 -08:00
Edmund Huber
857907320d allow underscores in nicks 2014-03-02 19:56:21 +01:00
Jeremy Latt
22c1cfdc3e chdir instead of relativizing paths in config 2014-03-01 21:51:52 -08:00
Jeremy Latt
9aa7debbfe move password handling into a single file 2014-03-01 15:18:49 -08:00
Jeremy Latt
b421971b61 move db init/open functions into a single file 2014-03-01 15:09:58 -08:00
Jeremy Latt
83d021fcb7 switch to gcfg for conf file
- add some validation for config file
- add comments explaining config
- remove TLS listener since most clients can't use it anyway
- remove unused nick generation function
2014-03-01 14:38:01 -08:00
Jeremy Latt
36602c9a3c basic capability negotiation
- multi-prefix is supported as an example
2014-02-28 19:24:38 -08:00
Jeremy Latt
542744d52a fix line parsing function 2014-02-27 21:21:47 -08:00
Jeremy Latt
8c8d371ae2 don't give operator to the first person to enter an empty persistent channel 2014-02-27 20:42:12 -08:00
Jeremy Latt
f17855fce9 check channel emptiness when anyone leaves 2014-02-27 18:33:44 -08:00
Jeremy Latt
e33a65ec72 fix channel persistence 2014-02-26 21:52:17 -08:00
Jeremy Latt
04f0b2c48d trim trailing space from commands 2014-02-26 16:18:52 -08:00
Jeremy Latt
9aeb813cf5 restrict nicknames to proper character set 2014-02-26 13:42:29 -08:00
Jeremy Latt
6f00f89efa relax unicode parsing rules
NFKC was previously used for all text. Now, we use NFKC for all args but
the last, which may be free text. This arg is normalized with NFC to
allow for formatting characters.
2014-02-26 13:11:29 -08:00
Jeremy Latt
4df8ec12f6 allow nick changing 2014-02-26 12:24:52 -08:00
Jeremy Latt
39911a812d handle mode command with trailing empty arguments 2014-02-26 12:08:01 -08:00
Jeremy Latt
66f9b42125 avoid duplicate mode changes 2014-02-25 22:19:21 -08:00
Jeremy Latt
0d277025c1 fix channel insert statement 2014-02-25 21:59:49 -08:00
Jeremy Latt
9dc229b98f skip nick change if there is no difference 2014-02-25 20:47:59 -08:00
Jeremy Latt
e9c5e4794e version 1.2.0 2014-02-25 20:24:30 -08:00
Jeremy Latt
45bb0d05e7 normalize all unicode input from the client 2014-02-25 20:22:07 -08:00
Jeremy Latt
c35d5d1b8a code review
- SEM_VER instead of SEMVER
- persist user limit along with other params
2014-02-25 16:13:47 -08:00
Jeremy Latt
b30e247e77 properly persist channels 2014-02-25 15:57:35 -08:00
Jeremy Latt
a30bb540e9 rewrite parseLine to be much saner about utf8 2014-02-25 13:24:32 -08:00
Jeremy Latt
e409bcec99 simplify new channel insert 2014-02-25 13:12:11 -08:00
Jeremy Latt
02abeeb164 persistent channels persisted to a sqlite db 2014-02-25 11:11:34 -08:00
Jeremy Latt
de5538f5d5 add persistent flag for channels 2014-02-25 10:04:59 -08:00
Jeremy Latt
0531c40481 simplify semantic version constant 2014-02-25 09:42:50 -08:00
Jeremy Latt
6882edeff7 version 1.1.0 2014-02-25 09:14:50 -08:00
Jeremy Latt
1fe73aaa9e kill command 2014-02-25 09:10:16 -08:00
Jeremy Latt
4d2d18caf1 time command 2014-02-25 07:45:40 -08:00
Jeremy Latt
f0305cf01a invite command 2014-02-25 07:35:52 -08:00
Jeremy Latt
d6ec1e719b add a version command for sumeet 2014-02-24 22:04:11 -08:00
Jeremy Latt
f0773c4e9e increase buffer for a server channel 2014-02-24 19:00:09 -08:00
Jeremy Latt
cc6f764c85 minor cleanup 2014-02-24 17:45:04 -08:00
Jeremy Latt
72726a39b8 many changes
- load config sub files relative to config file dir
- load config file by name
- expect bcrypt for passwords
- -genpasswd for generating config-file-safe passwords
- block client thread while checking passwords (PASS and OPER)
2014-02-24 09:48:46 -08:00
Jeremy Latt
be089e7f5f do bcrypt in the client main routine 2014-02-23 22:21:39 -08:00
Jeremy Latt
2229645a39 refactor server command loop 2014-02-23 19:13:45 -08:00
Jeremy Latt
41e6baf9d4 get rid of a race; use pointers where possible 2014-02-23 18:05:06 -08:00
Jeremy Latt
0856a9fa81 flag socket as closed when writes fail 2014-02-23 17:16:35 -08:00
Jeremy Latt
0bf968e19e move command parsing and hostname lookups into the socket routine 2014-02-23 17:04:24 -08:00
Jeremy Latt
ff5656fdb4 aggressively clean up client 2014-02-23 11:08:01 -08:00
Jeremy Latt
3b56b5bf42 expose various go internals as a DEBUG command 2014-02-23 10:04:31 -08:00
Jeremy Latt
f482b6b82f add all channel mask list replies 2014-02-22 15:01:11 -08:00
Jeremy Latt
c5c7469cf0 good ol' fashioned refactoring 2014-02-22 13:15:31 -08:00
Jeremy Latt
c7298c55b9 flesh out channel modes
- deprecate 's' mode
- add user limit
- don't leak key in mode messages to non-members
- begin refactoring Mode()
2014-02-22 13:08:25 -08:00
Jeremy Latt
21337cda7f add error responses for mode command 2014-02-22 12:15:34 -08:00
Jeremy Latt
1283bd35c7 encapsulate client replies in method 2014-02-22 11:40:32 -08:00
Jeremy Latt
39fb4bfb53 restrict new channels to channel regex 2014-02-21 17:19:02 -08:00
Jeremy Latt
c8701febd0 loosen restrictions on WHO replies 2014-02-21 11:09:46 -08:00
Jeremy Latt
f9bf422ba7 be more lax about whitespace when parsing commands from clients 2014-02-20 21:09:56 -08:00
Jeremy Latt
c1edddb9a1 fix whois reply 2014-02-20 20:47:05 -08:00
Jeremy Latt
e1c4c8e8cc don't send prefix on server-originated string coded replies 2014-02-20 20:08:32 -08:00
Jeremy Latt
0ad05abf5f omit prefix for non-numeric replies from the server 2014-02-20 19:55:17 -08:00
Jeremy Latt
23f01ff9ee handle CAP command silently in registration too 2014-02-20 19:55:03 -08:00
Jeremy Latt
b6d8f62674 adjust ping message 2014-02-20 19:22:08 -08:00
Jeremy Latt
52ffc77d8d don't allow double-joining 2014-02-20 18:56:13 -08:00
Jeremy Latt
1486411db1 render a single part string for all channel members 2014-02-20 18:20:07 -08:00
Jeremy Latt
7dffa530c2 send part message from correct source 2014-02-20 16:56:05 -08:00
Jeremy Latt
ad513da486 do hostname lookups in the client read thread 2014-02-20 13:03:33 -08:00
Jeremy Latt
97881b555d async hostname lookups 2014-02-20 11:51:45 -08:00
Jeremy Latt
c0dc733351 don't wait for writing to complete 2014-02-20 11:16:10 -08:00
Jeremy Latt
9960089226 format replies to strings instead of using a Reply struct 2014-02-19 22:20:34 -08:00
Jeremy Latt
25ebab37d3 replies shouldn't contain references to client 2014-02-19 19:30:49 -08:00
Jeremy Latt
9c385ededd synchronize on last writes to client sockets 2014-02-19 18:46:46 -08:00
Jeremy Latt
af6a8ee6f0 remove channel buffering 2014-02-19 18:22:57 -08:00
Jeremy Latt
6265b70622 get rid of goroutines on client socket 2014-02-19 18:13:35 -08:00
Jeremy Latt
95f267ea4f buffer all channels 2014-02-19 17:48:03 -08:00
Jeremy Latt
f090c616b3 reduce writes 2014-02-18 20:28:35 -08:00
Jeremy Latt
dcb4ac90e2 use a buffered channel for socket writing 2014-02-18 17:46:11 -08:00
Jeremy Latt
0cd6be8008 clean up nickname setting logic 2014-02-18 15:36:58 -08:00
Jeremy Latt
86d4cae141 swap refcounting friends for iteration 2014-02-18 15:28:20 -08:00
Jeremy Latt
9e471b5b5d solve quit/connection close race 2014-02-18 13:25:21 -08:00
Jeremy Latt
2bc1b952a0 do idle in the server goroutine instead of the timeout goroutine 2014-02-18 11:22:56 -08:00
Jeremy Latt
4f106e7d3e make server logging consistent with other logs 2014-02-18 10:22:40 -08:00
Jeremy Latt
58517ad4e8 fix closed channel on socket close 2014-02-18 10:13:57 -08:00
Jeremy Latt
9c1ab4f610 fix socket close race 2014-02-17 23:58:02 -08:00
Jeremy Latt
baf83e73d2 support USER from both RFCs 1459 and 2812 2014-02-17 22:10:48 -08:00
Jeremy Latt
bb64d38684 implement who reply like ngircd 2014-02-17 21:30:14 -08:00
Jeremy Latt
b17e62d0b0 names command 2014-02-17 21:02:03 -08:00
Jeremy Latt
046723a709 make whois channels possibly multiline 2014-02-17 20:47:41 -08:00
Jeremy Latt
528588acfc augment whois idle with signon time 2014-02-17 19:56:06 -08:00
Jeremy Latt
9a5f21e78c beef up whois 2014-02-17 19:08:57 -08:00
Jeremy Latt
bd3ca4ae47 fix race in idle timeout; fix some string trimming; fix some replies 2014-02-17 18:10:52 -08:00
Jeremy Latt
1a7f56a903 clean up general command and name handling 2014-02-17 17:58:22 -08:00
Jeremy Latt
a55b912941 enforce nicks via lowercase strings 2014-02-17 15:25:32 -08:00
Jeremy Latt
6d8b381927 convert client bools to a flags map 2014-02-17 13:22:35 -08:00
Jeremy Latt
2ecc66b9d9 add more modes to arg-having modes 2014-02-17 11:46:40 -08:00
Jeremy Latt
f0fc3b492c list command 2014-02-16 23:51:27 -08:00
Jeremy Latt
a9d7f64693 kick command 2014-02-16 23:29:11 -08:00
Jeremy Latt
af5a05f390 use a select in the server commands loop 2014-02-16 22:38:43 -08:00
Jeremy Latt
d5c9681a10 instantiate clients in the server command goroutine 2014-02-16 22:30:01 -08:00
Jeremy Latt
dc5e258f88 don't use a goroutine when initializing clients 2014-02-16 22:26:33 -08:00
Jeremy Latt
cd4503be31 allow blank lines from the client 2014-02-16 22:24:49 -08:00
Jeremy Latt
a894e3f37f parse lines more robustly 2014-02-16 22:22:46 -08:00
Jeremy Latt
4e56ea1bdc get rid of unnecessary concurrency for channels and clients 2014-02-16 22:20:42 -08:00
Jeremy Latt
54ca916c85 stop login timer on destroy 2014-02-16 18:16:13 -08:00
Jeremy Latt
e411dafda7 get rid of mutexes in favor of channel-base syncing 2014-02-16 17:23:47 -08:00
Jeremy Latt
74b8221db7 use mutexes more 2014-02-16 10:42:25 -08:00
Jeremy Latt
81a0f19390 fix bad ref in part command 2014-02-16 09:41:16 -08:00
Jeremy Latt
a17490e801 disable no-topic reply 2014-02-16 09:39:11 -08:00
Jeremy Latt
0f6ee63e6e fix a race 2014-02-15 20:20:37 -08:00