Browse Source

rpc: SetWriteDeadline for ws ping. fixes #553

pull/563/head
Ethan Buchman 7 years ago
parent
commit
e2ed15fa02
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      rpc/lib/server/handlers.go

+ 5
- 1
rpc/lib/server/handlers.go View File

@ -510,7 +510,10 @@ func (wsc *wsConnection) readRoutine() {
continue continue
} }
returns := rpcFunc.f.Call(args) returns := rpcFunc.f.Call(args)
wsc.Logger.Info("WSJSONRPC", "method", request.Method, "args", args, "returns", returns)
// TODO: Need to encode args/returns to string if we want to log them
wsc.Logger.Info("WSJSONRPC", "method", request.Method)
result, err := unreflectResult(returns) result, err := unreflectResult(returns)
if err != nil { if err != nil {
wsc.WriteRPCResponse(types.NewRPCResponse(request.ID, nil, err.Error())) wsc.WriteRPCResponse(types.NewRPCResponse(request.ID, nil, err.Error()))
@ -532,6 +535,7 @@ func (wsc *wsConnection) writeRoutine() {
case <-wsc.Quit: case <-wsc.Quit:
return return
case <-wsc.pingTicker.C: case <-wsc.pingTicker.C:
wsc.baseConn.SetWriteDeadline(time.Now().Add(time.Second * wsWriteTimeoutSeconds))
err := wsc.baseConn.WriteMessage(websocket.PingMessage, []byte{}) err := wsc.baseConn.WriteMessage(websocket.PingMessage, []byte{})
if err != nil { if err != nil {
wsc.Logger.Error("Failed to write ping message on websocket", "err", err) wsc.Logger.Error("Failed to write ping message on websocket", "err", err)


Loading…
Cancel
Save