Commit Graph

77 Commits

Author SHA1 Message Date
Shivaram Lingamneni c78253fd93 more memory-efficient implementation of line reading 2020-08-07 01:10:46 -04:00
Shivaram Lingamneni 28a0ec86b5 simplify Socket.Read 2020-06-23 03:25:20 -04:00
Shivaram Lingamneni a4f9e08a85 fix #1151 2020-06-22 15:50:28 -04:00
Shivaram Lingamneni c92192ef48 review fixes; add submatch support to glob 2020-05-05 17:20:55 -04:00
Shivaram Lingamneni 3d3aec6979 fix missing err check, thanks @eklitzke 2020-05-04 23:42:34 -04:00
Shivaram Lingamneni 3dc5c8de78 more work on websocket support 2020-05-04 23:26:51 -04:00
Shivaram Lingamneni 101dc6b0d9 increase TLS handshake timeout 2020-03-22 10:09:20 -04:00
Shivaram Lingamneni 0af0a0b445 fix a race condition
Setting `closed` on the socket (which can mean either "the socket is broken"
or "we should close the socket at the next opportunity") was racing against
the final write. Even if socket.closed is true, we should attempt to send
buffered message data to the socket, before we send the `finalData` and
actually call `Close`.
2019-05-22 16:42:25 -04:00
Shivaram Lingamneni 97e71dfef7 extract Semaphore to utils package 2019-04-15 11:15:31 -04:00
Shivaram Lingamneni 85493ef031 upgrade message-tags to non-draft version 2019-03-07 04:31:08 -05:00
Shivaram Lingamneni c8cf0befc6 fixes to irc/socket.go
* fix a race condition: a call to `Write` does not spawn a writer goroutine
  if the trylock is held, so `BlockingWrite` must check for fresh data after
  releasing the trylock
* streamline some close/finalize logic
2018-11-28 00:24:44 -05:00
Shivaram Lingamneni a0bf548fc5 draft/resume-0.2 implementation, message history support 2018-11-26 05:23:27 -05:00
Shivaram Lingamneni 3150f4e23b reduce copying of output lines 2018-05-01 05:23:40 -04:00
Shivaram Lingamneni ebfef1e848 add Semaphore and ServerSemaphores 2018-04-26 06:03:10 -04:00
Shivaram Lingamneni f54561171e try to reduce redundant goroutines 2018-04-15 19:05:22 -04:00
Shivaram Lingamneni 4778e7bcc7 fixes
* Placate `go vet`
* Reorder the `send` loop, clarify things a little
2018-04-15 01:21:32 -04:00
Shivaram Lingamneni b2f798cf03 eliminate dedicated RunSocketWriter goroutine 2018-04-13 16:13:43 -04:00
Shivaram Lingamneni d1f5c59eef fix #190 2018-03-17 23:26:07 -04:00
Shivaram Lingamneni 8fd1446627 tweak: clean up Socket.Close() 2018-03-16 18:16:04 -04:00
Shivaram Lingamneni 0a432c9d99 do an actual nonblocking send instead of the len() trick 2018-03-16 12:39:11 -04:00
Shivaram Lingamneni fa5d4be718 refactor irc.Socket 2018-03-15 19:11:29 -04:00
Daniel Oaks 2419f69879 Move all errors into errors.go 2018-02-03 22:03:36 +10:00
Euan Kemp 2e8a98a925 irc: fix timer memleak
This is a gotcha called out in the `time.After` docs. `time.After` will
leak the underlying channel if nothing ever receives on it.
2017-07-14 17:21:53 +10:00
Daniel Oaks 4254672133 socket: Fix bad mutex unlock 2017-04-19 08:50:57 +10:00
Daniel Oaks c911ff2bcd Squash a bunch of possible races 2017-04-18 22:26:01 +10:00
Daniel Oaks f7a4f5d956 socket: Move to a timing-out send method that reduces goroutines and ensures QUIT/ERROR are sent 2017-04-18 20:29:00 +10:00
Daniel Oaks 067f982da4 socket: Remove old comment 2017-04-18 17:19:55 +10:00
Daniel Oaks 4a66771c39 socket: Attempt to close sockets better 2017-04-18 16:43:24 +10:00
Daniel Oaks 86957d4392 socket: Fix quitting 2017-04-17 22:35:25 +10:00
Daniel Oaks 121269661b socket: Make closing work a little better 2017-04-17 21:03:07 +10:00
Daniel Oaks 317a804644 Fix dates at top of source files 2017-03-27 22:15:02 +10:00
Daniel Oaks 91fab3ba55 socket: Better deal with chanfloods 2017-03-24 21:54:22 +10:00
Daniel Oaks f5536d7945 socket: Add a simple println when SendQ exceeded, config comment update 2017-03-23 12:12:39 +10:00
Daniel Oaks c3be2d0d46 socket: Fixup sending code so we can support more connections 2017-03-23 12:07:23 +10:00
Daniel Oaks f29a5f0e70 socket: Very initial SendQ limit 2017-03-14 08:12:39 +10:00
Daniel Oaks de4db1c6ef socket: Start overhaul of sockets and writing 2017-03-13 23:53:21 +10:00
Daniel Oaks 149550b453 socket: Timeout TLS handshakes 2016-10-22 20:53:36 +10:00
Daniel Oaks b5e7d8968f accounts: Add SASL EXTERNAL handler 2016-09-07 21:32:58 +10:00
Daniel Oaks 49034cb20e certfp: Add certfp retrieval from client 2016-09-05 13:53:39 +10:00
Daniel Oaks 2f08401a0f Attempt to add mostly-correct license info at the top of each file... track this stuff a bit better 2016-06-15 21:50:56 +10:00
Daniel Oaks 9860094020 socket: Use updated socket code 2016-06-15 21:21:45 +10: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 142bf3d3bb don't async buffer flushing 2014-03-31 10:00:59 -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 b0bb0faadc remove unnecessary String()s; rename parse functions 2014-03-28 14:33:31 -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