Fix potential nil pointer dereference
This commit is contained in:
@@ -95,16 +95,22 @@ func (b *broker) prepareMessage(ctx context.Context, event Event) message {
|
|||||||
|
|
||||||
var errWriteTimeOut = errors.New("write timeout")
|
var errWriteTimeOut = errors.New("write timeout")
|
||||||
|
|
||||||
// writeEvent Write to the ResponseWriter, Server Sent Events compatible
|
// writeEvent Write to the ResponseWriter, Server Sent Events compatible, and sends it
|
||||||
|
// right away, by flushing the writer (if it is a Flusher). It waits for the message to be flushed
|
||||||
|
// or times out after the specified timeout
|
||||||
func writeEvent(w io.Writer, event message, timeout time.Duration) (err error) {
|
func writeEvent(w io.Writer, event message, timeout time.Duration) (err error) {
|
||||||
flusher, _ := w.(http.Flusher)
|
|
||||||
complete := make(chan struct{}, 1)
|
complete := make(chan struct{}, 1)
|
||||||
|
flusher, ok := w.(http.Flusher)
|
||||||
|
if ok {
|
||||||
go func() {
|
go func() {
|
||||||
_, err = fmt.Fprintf(w, "id: %d\nevent: %s\ndata: %s\n\n", event.id, event.event, event.data)
|
_, err = fmt.Fprintf(w, "id: %d\nevent: %s\ndata: %s\n\n", event.id, event.event, event.data)
|
||||||
// Flush the data immediately instead of buffering it for later.
|
// Flush the data immediately instead of buffering it for later.
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
complete <- struct{}{}
|
complete <- struct{}{}
|
||||||
}()
|
}()
|
||||||
|
} else {
|
||||||
|
complete <- struct{}{}
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
case <-complete:
|
case <-complete:
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user