Skip to content

Commit

Permalink
Merge eba4e0b into 1f9d173
Browse files Browse the repository at this point in the history
  • Loading branch information
Gilthoniel committed Jun 5, 2019
2 parents 1f9d173 + eba4e0b commit e52489a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
25 changes: 20 additions & 5 deletions websocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,7 @@ func (t wsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
log.Error(err)
return
}
defer func() {
ws.Close()
}()
defer ws.Close()

// Loop for each message
outerReadLoop:
Expand Down Expand Up @@ -210,8 +208,24 @@ outerReadLoop:
break
}
} else {
closing := make(chan bool)
go func() {
for {
// Listen for incoming messages to know if the client wants
// to close the stream.
_, _, err := ws.ReadMessage()
if err != nil {
close(closing)
return
}
}
}()

for {
select {
case <-closing:
close(tun.close)
return
case reply, ok := <-tun.out:
if !ok {
err = errors.New("service finished streaming")
Expand All @@ -238,7 +252,7 @@ outerReadLoop:
}

ws.WriteControl(websocket.CloseMessage,
websocket.FormatCloseMessage(4000, err.Error()),
websocket.FormatCloseMessage(websocket.CloseProtocolError, err.Error()),
time.Now().Add(time.Millisecond*500))
return
}
Expand Down Expand Up @@ -510,7 +524,8 @@ func (c *Client) closeConn(dst destination) error {
conn, ok := c.connections[dst]
if ok {
delete(c.connections, dst)
conn.WriteMessage(websocket.CloseMessage, nil)
conn.WriteMessage(websocket.CloseMessage,
websocket.FormatCloseMessage(websocket.CloseNormalClosure, "client closed"))
return conn.Close()
}
return nil
Expand Down
2 changes: 1 addition & 1 deletion websocket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"go.dedis.ch/onet/v3/log"
"go.dedis.ch/onet/v3/network"
"go.dedis.ch/protobuf"
"gopkg.in/satori/go.uuid.v1"
uuid "gopkg.in/satori/go.uuid.v1"
)

func init() {
Expand Down

0 comments on commit e52489a

Please sign in to comment.