@@ -109,12 +109,17 @@ func (mr *msgReader) putFlateReader() {
109
109
}
110
110
111
111
func (mr * msgReader ) close () {
112
- mr .c .readMu .Lock ( context . Background () )
112
+ mr .c .readMu .forceLock ( )
113
113
mr .putFlateReader ()
114
114
mr .dict .close ()
115
115
if mr .flateBufio != nil {
116
116
putBufioReader (mr .flateBufio )
117
117
}
118
+
119
+ if mr .c .client {
120
+ putBufioReader (mr .c .br )
121
+ mr .c .br = nil
122
+ }
118
123
}
119
124
120
125
func (mr * msgReader ) flateContextTakeover () bool {
@@ -292,11 +297,11 @@ func (c *Conn) handleControl(ctx context.Context, h header) (err error) {
292
297
func (c * Conn ) reader (ctx context.Context ) (_ MessageType , _ io.Reader , err error ) {
293
298
defer errd .Wrap (& err , "failed to get reader" )
294
299
295
- err = c .readMu .Lock (ctx )
300
+ err = c .readMu .lock (ctx )
296
301
if err != nil {
297
302
return 0 , nil , err
298
303
}
299
- defer c .readMu .Unlock ()
304
+ defer c .readMu .unlock ()
300
305
301
306
if ! c .msgReader .fin {
302
307
return 0 , nil , errors .New ("previous message not read to completion" )
@@ -368,11 +373,11 @@ func (mr *msgReader) Read(p []byte) (n int, err error) {
368
373
errd .Wrap (& err , "failed to read" )
369
374
}()
370
375
371
- err = mr .c .readMu .Lock (mr .ctx )
376
+ err = mr .c .readMu .lock (mr .ctx )
372
377
if err != nil {
373
378
return 0 , err
374
379
}
375
- defer mr .c .readMu .Unlock ()
380
+ defer mr .c .readMu .unlock ()
376
381
377
382
n , err = mr .limitReader .Read (p )
378
383
if mr .flate && mr .flateContextTakeover () {
0 commit comments