Make get_request timeouts recoverable #1
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.
With short select() delays (e.g. in event loops) and slow connections,
the client may not have more data ready before select timeouts.
This change lets get_request return a different kind of false (defined
instead of undef) in case of a select timeout, so that the caller can
choose to call it again. To make this work, the same buffer
is re-used with _need_more every time.
Hacks that inherit from HTTP::Daemon and override _need_more, will
break, as will existing code that explicitly tests the result of
get_request for definedness rather than its boolean value, and then
assumes that it will be an HTTP::Request object. Both cases are
unlikely.
The unit test is based on chunked.t with a lot removed.