| Summary: | unhandled EINTR while connecting causes ssh to exit prematurely | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Portable OpenSSH | Reporter: | Matthew Avery <mavery> | ||||||
| Component: | ssh | Assignee: | Assigned to nobody <unassigned-bugs> | ||||||
| Status: | CLOSED FIXED | ||||||||
| Severity: | trivial | CC: | djm, dtucker | ||||||
| Priority: | P5 | ||||||||
| Version: | 8.0p1 | ||||||||
| Hardware: | amd64 | ||||||||
| OS: | Linux | ||||||||
| Bug Depends on: | |||||||||
| Bug Blocks: | 3162 | ||||||||
| Attachments: |
|
||||||||
|
Description
Matthew Avery
2019-09-17 03:40:41 AEST
Created attachment 3401 [details]
handle EINTR in connect_timeout() and waitfd()
I think the timeout_connect() case in the previous patch is slightly wrong. The connect() call did not succeed and needs to be retried.
Darren, is this even necessary with your recent signal changes?
(In reply to Damien Miller from comment #1) > Darren, is this even necessary with your recent signal changes? I think it'll now work correctly anything that sets SA_RESTART but we don't do that on every platform for reasons, so this diff is probably needed for their benefit. Comment on attachment 3401 [details] handle EINTR in connect_timeout() and waitfd() >+ } else if (errno == EINTR) >+ continue; maybe also EAGAIN? This has been committed and will be in OpenSSH 8.4, due in a few months - thanks Mass close of all bugs fixed in 8.4 release. |