Skip to content

Commit 921a4a1

Browse files
committed
update
1 parent eb09a12 commit 921a4a1

3 files changed

Lines changed: 20 additions & 13 deletions

File tree

context_x_response.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,10 @@ func (c *XContext) NoContent(codes ...int) error {
349349
if c.code == 0 {
350350
c.code = http.StatusOK
351351
}
352+
err := c.preResponse()
353+
if err != nil {
354+
return err
355+
}
352356
c.response.WriteHeader(c.code)
353357
return nil
354358
}

engine/fasthttp/response.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -180,16 +180,20 @@ func (r *Response) Stream(step func(context.Context, io.Writer) (bool, error)) e
180180
defer tick.Stop()
181181
defer cancel()
182182
for {
183-
<-tick.C
184-
_, err := w.Write(ssePingBytes)
185-
if err != nil {
186-
r.logger.Debug(`SSE: `, err)
187-
return
188-
}
189-
err = w.Flush()
190-
if err != nil {
191-
r.logger.Debug(`Flush: `, err)
183+
select {
184+
case <-ctx.Done():
192185
return
186+
case <-tick.C:
187+
_, err := w.Write(ssePingBytes)
188+
if err != nil {
189+
r.logger.Debug(`SSE: `, err)
190+
return
191+
}
192+
err = w.Flush()
193+
if err != nil {
194+
r.logger.Debug(`Flush: `, err)
195+
return
196+
}
193197
}
194198
}
195199
}()
@@ -237,8 +241,8 @@ func (r *Response) Error(errMsg string, args ...int) {
237241
} else {
238242
r.status = fasthttp.StatusInternalServerError
239243
}
240-
r.Write(engine.Str2bytes(errMsg))
241244
r.WriteHeader(r.status)
245+
r.Write(engine.Str2bytes(errMsg))
242246
}
243247

244248
func (r *Response) reset(req *Request, h engine.Header) {
@@ -249,6 +253,7 @@ func (r *Response) reset(req *Request, h engine.Header) {
249253
r.committed = false
250254
r.writer = req.context
251255
r.stdResponseWriter = nil
256+
r.logger = log.GetLogger("echo")
252257
}
253258

254259
func (r *Response) StdResponseWriter() http.ResponseWriter {

engine/standard/response.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ func (r *Response) WriteHeader(code int) {
5757
return
5858
}
5959
r.status = code
60-
r.header.lock.Lock()
6160
r.ResponseWriter.WriteHeader(code)
62-
r.header.lock.Unlock()
6361
r.committed = true
6462
}
6563

@@ -112,8 +110,8 @@ func (r *Response) Error(errMsg string, args ...int) {
112110
} else {
113111
r.status = http.StatusInternalServerError
114112
}
115-
r.Write(engine.Str2bytes(errMsg))
116113
r.WriteHeader(r.status)
114+
r.Write(engine.Str2bytes(errMsg))
117115
}
118116

119117
func (r *Response) reset(w http.ResponseWriter, req *http.Request, h *Header) {

0 commit comments

Comments
 (0)