Commit graph

552 commits

Author SHA1 Message Date
Ash Logan
a3407bb186 fix(endpoint): Try to avoid double-locking the Connections map 2025-01-03 21:26:28 +11:00
Ash Logan
de15fd4b37 hack(endpoint): Hotfix FindConnectionByPID
Should make it less likely to give outright incorrect results
2025-01-03 18:30:58 +11:00
Ash Logan
fadcea46f8 feat(endpoint): Route connection closures via new cleanupConnectionByID method
Centralising connection closures helps ensure that everything gets done (.cleanup()) and there's One True Way to find them in the Connections map - in this case I went with the ID, but we could also put together a discriminator

It's worth noting that every callsite has a PRUDPConnection*, so maybe a different datastructure would serve us better here?
2025-01-03 18:27:20 +11:00
Ash Logan
5dda129a6f chore: Remove Connections tracking from SocketConnection
Every SocketConnection had a map of *PRUDPConnection, which was never actually inserted into anywhere, so the intended function of tracking what OS sockets have which PRUDP streams was not being done.

Remove it as dead code. If the rest of the connection tracking is going to be implemented, this commit can be reverted.

Since the SocketConnection no longer has long-lived state in it, also remove the map on PRUDPServer and just create it as a simple data structure when needed.

The connection close handling of the websocket server had to be rewritten - the old code would never do anything due to the empty maps, so this can't be *worse* than nothing :)
2025-01-03 17:58:46 +11:00
Ash Logan
6f3f3d1b4a .gitignore: add IDEA 2025-01-03 17:54:55 +11:00
Jonathan Barrow
a035545093
Merge pull request #70 from wolfendale/performance-tweaks 2024-07-07 13:55:06 -04:00
Michael Wolfendale
feee2dd599
fix: allocate buffers for incoming packets 2024-07-07 16:36:34 +01:00
Michael Wolfendale
4fab7a2c86
fix: fix kerberos key derivation 2024-07-07 16:36:34 +01:00
Jonathan Barrow
d633dca018
Merge pull request #69 from wolfendale/performance-tweaks 2024-07-05 12:55:28 -04:00
Michael Wolfendale
22d2698cef
chore: add comment to TimeoutManager
Co-authored-by: Daniel López Guimaraes <112760654+DaniElectra@users.noreply.github.com>
2024-07-05 17:48:47 +01:00
Michael Wolfendale
ad488be838
chore: update kerberos key derivation to reduce allocations 2024-07-05 17:39:29 +01:00
Michael Wolfendale
abfca9a10d
chore: remove unnecessary goroutines 2024-07-05 17:15:17 +01:00
Michael Wolfendale
c214a2a7a5
chore: reduce buffer allocations when receiving packets 2024-07-05 16:37:52 +01:00
Michael Wolfendale
4fefb05f86
chore: limit the scope of connection locking in TimeoutManager 2024-07-05 16:37:52 +01:00
Michael Wolfendale
348c37df5d
fix: removed double lock from reliable ping packet handling 2024-07-05 16:37:52 +01:00
Jonathan Barrow
293c20d6be
Merge pull request #68 from wolfendale/timeout-rework 2024-07-02 12:47:24 -04:00
Michael Wolfendale
0502cc64b1
chore: renamed GetRTO to RTO to match style rules 2024-07-02 17:31:42 +01:00
Michael Wolfendale
9997fb672a
chore: rename ResendScheduler TimeoutManager 2024-07-02 17:29:28 +01:00
Michael Wolfendale
0d8506dd52
chore: updated documentation 2024-07-02 17:28:31 +01:00
Michael Wolfendale
680abd3cb0
chore: update max silence time 2024-07-02 16:54:47 +01:00
Michael Wolfendale
18380590ab
feat: rework resending packets to be more accurate 2024-07-02 16:54:47 +01:00
Daniel López Guimaraes
2b6ea02749
Merge pull request #67 from wolfendale/master 2024-06-25 23:00:43 +02:00
Michael Wolfendale
83e5157350
feat: add delay to outgoing fragmented data packets 2024-06-25 21:58:40 +01:00
Daniel López Guimaraes
090cfb5568
Merge pull request #65 from wolfendale/connection-state-checks
Connection State Changes
2024-06-14 22:29:19 +02:00
Michael Wolfendale
de3610deaf
fix: added Purge method to PacketDispatchQueue 2024-06-12 23:03:41 +01:00
Michael Wolfendale
1258086480
fix: modify connection state checks 2024-06-11 12:49:10 +01:00
Daniel López Guimaraes
f7b8a549ba
Merge pull request #64 from wolfendale/revert-ack-changes 2024-06-06 22:51:36 +02:00
Michael Wolfendale
a638798255
fix: remove reliable check from ack packets 2024-06-06 21:24:17 +01:00
Daniel López Guimaraes
b0c937dbe4
Merge pull request #62 from wolfendale/fix-ping-ack 2024-06-03 23:25:55 +02:00
Michael Wolfendale
ae41e77566
fix: prevented ping packets from acknowledging reliable packets 2024-06-02 12:07:52 +01:00
Daniel López Guimaraes
4f59501d31
Merge pull request #59 from wolfendale/packet-dispatch-queue 2024-05-27 23:05:08 +02:00
Michael Wolfendale
a597a37d41
chore: update godoc comments 2024-05-27 21:59:51 +01:00
Michael Wolfendale
f66fae8827
chore: remove Purge from PacketDispatchQueue as it is unneeded 2024-05-27 21:59:51 +01:00
Michael Wolfendale
07dda5708e
chore: remove logic in SlidingWindow for incoming packets 2024-05-27 21:59:51 +01:00
Michael Wolfendale
75c402b7ee
feat: use PacketDispatchQueue in PRUDPEndpoint 2024-05-27 21:59:51 +01:00
Michael Wolfendale
24d542506c
feat: add PacketDispatchQueue 2024-05-27 20:39:28 +01:00
Jonathan Barrow
26c9159397
Merge pull request #57 from wolfendale/connectivity-issues 2024-05-25 17:47:56 -04:00
Michael Wolfendale
363cc7b5bf
fix: prevent multi-fragment messages being lost 2024-05-25 20:42:54 +01:00
Jonathan Barrow
8e0b1a2be4
Merge pull request #51 from wolfendale/sliding-window-lock 2024-05-22 18:24:56 -04:00
Daniel López Guimaraes
39b2b55f08
fix: Tidy go modules 2024-05-19 18:41:43 +01:00
Daniel López Guimaraes
d23ec239ba
chore: Update go modules 2024-05-19 18:40:12 +01:00
Michael Wolfendale
4315467d6a
fix: fixed race condition in SlidingWindow 2024-05-18 09:08:07 +01:00
Jonathan Barrow
5f38bf34bf
Merge pull request #46 from PabloMK7/disconnectbyid 2024-04-19 13:05:05 -04:00
PabloMK7
ba656ff75b Rename callback to predicate 2024-04-19 19:03:37 +02:00
PabloMK7
10235684fb Fix typo 2024-04-18 18:21:28 +02:00
Daniel López Guimaraes
e2d333d597
Merge pull request #44 from DaniElectra/thread-scheduler 2024-04-18 17:12:30 +02:00
PabloMK7
90d81f6eb9 Implement and use deleteConnectionByID 2024-04-18 14:51:01 +02:00
Daniel López Guimaraes
eb3f1be3ae
resend_scheduler: Restructure finished check 2024-04-13 20:43:48 +01:00
Daniel López Guimaraes
edb4f2fc7a
resend_scheduler: Fix memory leaks
When a packet gets acknowledged, the goroutine timer doesn't return, and
instead waits forever for the timer that has already been stopped.
Return if the packet has been acknowledged of if the connection has
timed out to avoid wasting resources.
2024-04-13 16:50:16 +01:00
Daniel López Guimaraes
509b274086
station-url: Set flags when calling FromString 2024-04-10 19:38:29 +01:00