-
v1.1.8
Stablereleased this
2026-07-19 14:13:04 +07:00 | 5 commits to main since this releaseConcurrency and lifecycle safety fixes across the session, transport, forwarder, and port-registry packages, plus a new
frontendURLenv var.-
Fix data race in
SetChannel()andChannel()by adding mutex protection -
Fix data race in
StartedAt()by adding mutex protection -
Fix
waitForTCPIPForward()failing on non-tcpip-forwardglobal requests -
Fix data races in the
forwarderstruct (SetType(),SetForwardedPort(),SetListener(),TunnelType(),ForwardedPort(),Listener()) viasync.RWMutex -
Fix data races in the
slugstruct (Set(),String()) viasync.RWMutex -
Fix data race in
HandleTCPForward()caused by a goroutine writing to an outer-scopeerrvariable -
Fix POST/PUT requests hanging in the HTTP handler
-
Fix
AddRangeinfinite loop whenendPort == 65535(uint16 wraparound) -
Fix
Claimbypassing the allowed port range — now rejects out-of-range ports -
Fix
Unassignedhanding out the same port to concurrent callers — now reserves atomically -
Fix
SetStatussilently creating entries for unknown ports — now returns an error -
Fix concurrent map read/write in
registry.Updatecrashing the server -
Refactor
Close()to release its mutex before calling external code, preventing deadlocks -
Make
CLOSEDa terminal state —SetChannel()andSetStatus()now reject/ignore calls afterClose() -
Add nil check to
SetChannel()to prevent masking upstream bugs -
Add
PortRegistryinterface for better interface segregation -
Set
startedAtwhen the session starts running, instead of at object creation -
Extract
Close()into helper methods:closeChannel(),closeConnection(),cleanupRegistry(),cleanupForwarder() -
Fix
isClosedError()redundant string comparison -
Make
cleanupRegistry()conditional on non-empty slug to avoid unnecessary registry calls -
Use
ForwardedPort()/Listener()getters consistently instead of direct field access -
Add
frontendURLenvironment variable -
#150 Fix race conditions and improve lifecycle safety
-
#151 fix(session): resolve race conditions
-
#154 fix(httphandler): post/put request hang
-
#155 fix(port, session): harden port registry and fix concurrent allocation
-
#156 fix(registry): data race registry update
Downloads
-