Skip to content

Commit ff25e34

Browse files
committed
Properly lock writes with a full lock
1 parent 670228b commit ff25e34

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

channel.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,8 @@ func (c *Channel) Push(event string, payload any) (*Push, error) {
223223
func (c *Channel) On(event string, callback func(payload any)) (bindingRef Ref) {
224224
bindingRef = c.refGenerator.nextRef()
225225

226-
c.mu.RLock()
227-
defer c.mu.RUnlock()
226+
c.mu.Lock()
227+
defer c.mu.Unlock()
228228

229229
c.bindings[bindingRef] = &channelBinding{
230230
event: event,
@@ -239,8 +239,8 @@ func (c *Channel) On(event string, callback func(payload any)) (bindingRef Ref)
239239
func (c *Channel) OnRef(ref Ref, event string, callback func(payload any)) (bindingRef Ref) {
240240
bindingRef = c.refGenerator.nextRef()
241241

242-
c.mu.RLock()
243-
defer c.mu.RUnlock()
242+
c.mu.Lock()
243+
defer c.mu.Unlock()
244244

245245
c.bindings[bindingRef] = &channelBinding{
246246
ref: ref,
@@ -271,16 +271,16 @@ func (c *Channel) OnError(callback func(payload any)) (bindingRef Ref) {
271271

272272
// Off removes the callback for the given bindingRef, as returned by On, OnRef, OnJoin, OnClose, OnError.
273273
func (c *Channel) Off(bindingRef Ref) {
274-
c.mu.RLock()
275-
defer c.mu.RUnlock()
274+
c.mu.Lock()
275+
defer c.mu.Unlock()
276276

277277
delete(c.bindings, bindingRef)
278278
}
279279

280280
// Clear removes all bindings for the given event
281281
func (c *Channel) Clear(event string) {
282-
c.mu.RLock()
283-
defer c.mu.RUnlock()
282+
c.mu.Lock()
283+
defer c.mu.Unlock()
284284

285285
for ref, binding := range c.bindings {
286286
if binding.event == event {

0 commit comments

Comments
 (0)