Implemented client-side timeout for getUpdates #85
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes the hang in case of network interruption during
getUpdates
.Steps to reproduce: unplug/replug the network cable or disconnect/reconnect to wifi, while the program is in
getUpdates
call, which is almost 100% of the time usually.The hang happens because on the lowest level
epoll
doesn't notify us of network interruption (unless tcp keepalive is enabled), and such socket will never produce anyread
event after the interruption.The fix is to introduce a timeout over http request. Conveniently we already have the timeout notion on the protocol level, so we reuse this value (only adding 10 seconds to it just in case).