rpc: SetWriteDeadline for ws ping. fixes #553

This commit is contained in:
Ethan Buchman
2017-06-26 17:12:52 -04:00
parent b92814c933
commit e2ed15fa02

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)