@@ -12,7 +12,6 @@ import (
1212 "time"
1313
1414 "github.com/klauspost/compress/flate"
15- kflate "github.com/klauspost/compress/flate"
1615 "golang.org/x/xerrors"
1716
1817 "nhooyr.io/websocket/internal/errd"
@@ -77,9 +76,8 @@ type msgWriterState struct {
7776 opcode opcode
7877 flate bool
7978
80- trimWriter * trimLastFourBytesWriter
81- flateWriter * flate.Writer
82- dict slidingWindow
79+ trimWriter * trimLastFourBytesWriter
80+ dict slidingWindow
8381}
8482
8583func newMsgWriterState (c * Conn ) * msgWriterState {
@@ -90,23 +88,14 @@ func newMsgWriterState(c *Conn) *msgWriterState {
9088 return mw
9189}
9290
93- const stateless = true
94-
9591func (mw * msgWriterState ) ensureFlate () {
9692 if mw .trimWriter == nil {
9793 mw .trimWriter = & trimLastFourBytesWriter {
9894 w : writerFunc (mw .write ),
9995 }
10096 }
10197
102- if stateless {
103- mw .dict .init (8192 )
104- } else {
105- if mw .flateWriter == nil {
106- mw .flateWriter = getFlateWriter (mw .trimWriter )
107- }
108- }
109-
98+ mw .dict .init (8192 )
11099 mw .flate = true
111100}
112101
@@ -163,13 +152,6 @@ func (mw *msgWriterState) reset(ctx context.Context, typ MessageType) error {
163152 return nil
164153}
165154
166- func (mw * msgWriterState ) putFlateWriter () {
167- if mw .flateWriter != nil {
168- putFlateWriter (mw .flateWriter )
169- mw .flateWriter = nil
170- }
171- }
172-
173155// Write writes the given bytes to the WebSocket connection.
174156func (mw * msgWriterState ) Write (p []byte ) (_ int , err error ) {
175157 defer errd .Wrap (& err , "failed to write" )
@@ -186,15 +168,12 @@ func (mw *msgWriterState) Write(p []byte) (_ int, err error) {
186168 }
187169
188170 if mw .flate {
189- if stateless {
190- err = kflate .StatelessDeflate (mw .trimWriter , p , false , mw .dict .buf )
191- if err != nil {
192- return 0 , err
193- }
194- mw .dict .write (p )
195- return len (p ), nil
171+ err = flate .StatelessDeflate (mw .trimWriter , p , false , mw .dict .buf )
172+ if err != nil {
173+ return 0 , err
196174 }
197- return mw .flateWriter .Write (p )
175+ mw .dict .write (p )
176+ return len (p ), nil
198177 }
199178
200179 return mw .write (p )
@@ -216,29 +195,20 @@ func (mw *msgWriterState) Close() (err error) {
216195 mw .writeMu .Lock ()
217196 defer mw .writeMu .Unlock ()
218197
219- if mw .flate && ! stateless {
220- err = mw .flateWriter .Flush ()
221- if err != nil {
222- return xerrors .Errorf ("failed to flush flate: %w" , err )
223- }
224- }
225-
226198 _ , err = mw .c .writeFrame (mw .ctx , true , mw .flate , mw .opcode , nil )
227199 if err != nil {
228200 return xerrors .Errorf ("failed to write fin frame: %w" , err )
229201 }
230202
231203 if mw .flate && ! mw .flateContextTakeover () {
232204 mw .dict .close ()
233- mw .putFlateWriter ()
234205 }
235206 mw .mu .Unlock ()
236207 return nil
237208}
238209
239210func (mw * msgWriterState ) close () {
240211 mw .writeMu .Lock ()
241- mw .putFlateWriter ()
242212 mw .dict .close ()
243213}
244214
@@ -311,14 +281,13 @@ func (c *Conn) writeFrame(ctx context.Context, fin bool, flate bool, opcode opco
311281 return n , nil
312282}
313283
314- func (c * Conn ) writeFramePayload (p []byte ) (_ int , err error ) {
284+ func (c * Conn ) writeFramePayload (p []byte ) (n int , err error ) {
315285 defer errd .Wrap (& err , "failed to write frame payload" )
316286
317287 if ! c .writeHeader .masked {
318288 return c .bw .Write (p )
319289 }
320290
321- var n int
322291 maskKey := c .writeHeader .maskKey
323292 for len (p ) > 0 {
324293 // If the buffer is full, we need to flush.
0 commit comments