Merge pull request #532 from wpaulino/remove-extra-reconnection-logic
chain/rpc: remove unnecessary ping keep alive
This commit is contained in:
commit
09d3730f35
1 changed files with 0 additions and 44 deletions
44
chain/rpc.go
44
chain/rpc.go
|
@ -386,8 +386,6 @@ func (c *RPCClient) handler() {
|
|||
enqueue := c.enqueueNotification
|
||||
var dequeue chan interface{}
|
||||
var next interface{}
|
||||
pingChan := time.After(time.Minute)
|
||||
pingChanReset := make(chan (<-chan time.Time))
|
||||
out:
|
||||
for {
|
||||
select {
|
||||
|
@ -407,7 +405,6 @@ out:
|
|||
dequeue = c.dequeueNotification
|
||||
}
|
||||
notifications = append(notifications, n)
|
||||
pingChan = time.After(time.Minute)
|
||||
|
||||
case dequeue <- next:
|
||||
if n, ok := next.(BlockConnected); ok {
|
||||
|
@ -430,47 +427,6 @@ out:
|
|||
dequeue = nil
|
||||
}
|
||||
|
||||
case <-pingChan:
|
||||
// No notifications were received in the last 60s. Ensure the
|
||||
// connection is still active by making a new request to the server.
|
||||
//
|
||||
// This MUST wait for the response in a new goroutine so as to not
|
||||
// block channel sends enqueueing more notifications. Doing so
|
||||
// would cause a deadlock and after the timeout expires, the client
|
||||
// would be shut down.
|
||||
//
|
||||
// TODO: A minute timeout is used to prevent the handler loop from
|
||||
// blocking here forever, but this is much larger than it needs to
|
||||
// be due to dcrd processing websocket requests synchronously (see
|
||||
// https://github.com/btcsuite/btcd/issues/504). Decrease this to
|
||||
// something saner like 3s when the above issue is fixed.
|
||||
type sessionResult struct {
|
||||
err error
|
||||
}
|
||||
sessionResponse := make(chan sessionResult, 1)
|
||||
go func() {
|
||||
_, err := c.Session()
|
||||
sessionResponse <- sessionResult{err}
|
||||
}()
|
||||
go func() {
|
||||
select {
|
||||
case resp := <-sessionResponse:
|
||||
if resp.err != nil {
|
||||
log.Errorf("Failed to receive session "+
|
||||
"result: %v", resp.err)
|
||||
c.Stop()
|
||||
}
|
||||
pingChanReset <- time.After(time.Minute)
|
||||
|
||||
case <-time.After(time.Minute):
|
||||
log.Errorf("Timeout waiting for session RPC")
|
||||
c.Stop()
|
||||
}
|
||||
}()
|
||||
|
||||
case ch := <-pingChanReset:
|
||||
pingChan = ch
|
||||
|
||||
case c.currentBlock <- bs:
|
||||
|
||||
case <-c.quit:
|
||||
|
|
Loading…
Reference in a new issue