Skip to content
This repository was archived by the owner on May 26, 2022. It is now read-only.

Commit 370d1a3

Browse files
authored
Merge pull request #65 from libp2p/fix/issue-56
Add mutex for write/close
2 parents 03cf22a + f6ca84a commit 370d1a3

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

conn_native.go

+7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Conn struct {
1717
DefaultMessageType int
1818
reader io.Reader
1919
closeOnce sync.Once
20+
mx sync.Mutex
2021
}
2122

2223
func (c *Conn) Read(b []byte) (int, error) {
@@ -67,6 +68,9 @@ func (c *Conn) prepNextReader() error {
6768
}
6869

6970
func (c *Conn) Write(b []byte) (n int, err error) {
71+
c.mx.Lock()
72+
defer c.mx.Unlock()
73+
7074
if err := c.Conn.WriteMessage(c.DefaultMessageType, b); err != nil {
7175
return 0, err
7276
}
@@ -78,6 +82,9 @@ func (c *Conn) Write(b []byte) (n int, err error) {
7882
// close error, subsequent and concurrent calls will return nil.
7983
// This method is thread-safe.
8084
func (c *Conn) Close() error {
85+
c.mx.Lock()
86+
defer c.mx.Unlock()
87+
8188
var err error
8289
c.closeOnce.Do(func() {
8390
err1 := c.Conn.WriteControl(

0 commit comments

Comments
 (0)