Commit 24e2523
committed
Fix isClosing data race
This PR fixes a data race related to the webSocketClient isClosing field.
Before this change the field was set in the Close method while holding a lock
but read in the listenWebSocket method without holding a lock. The point of the
isClosing flag was to prevent sending on errChan after close. Instead of having
a hidden dependecy between a flag and the errChan channel state, this PR
replaces isClosing with a flag named exitListenWebSocket, and when the flag is
set the listenWebSocket closes errChan itself. listenWebSocket is the only
goroutine that writes to errChan, so there's no longer any possibility of
writing on a closed channel -- the listenWebSocket goroutine now effectively
"owns" errChan.1 parent 26f7f84 commit 24e2523
2 files changed
Lines changed: 23 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
52 | 52 | | |
| 53 | + | |
53 | 54 | | |
54 | | - | |
55 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
56 | 60 | | |
57 | 61 | | |
58 | 62 | | |
| |||
104 | 108 | | |
105 | 109 | | |
106 | 110 | | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | 111 | | |
116 | 112 | | |
117 | 113 | | |
| |||
126 | 122 | | |
127 | 123 | | |
128 | 124 | | |
129 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
130 | 128 | | |
131 | 129 | | |
| 130 | + | |
132 | 131 | | |
133 | 132 | | |
134 | | - | |
| 133 | + | |
135 | 134 | | |
136 | 135 | | |
137 | 136 | | |
138 | 137 | | |
139 | | - | |
| 138 | + | |
140 | 139 | | |
141 | 140 | | |
142 | 141 | | |
| |||
216 | 215 | | |
217 | 216 | | |
218 | 217 | | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
223 | 223 | | |
224 | 224 | | |
225 | 225 | | |
| |||
0 commit comments