[php-src] PR #23669: Fixed bug GH-22981 (unix socket connect fails with EAGAIN when listen backlog is full)
| From: | shoutoutuoadi325 | Date: | Sat, 12 Sep 2026 07:28:21 +0000 |
| Subject: | [php-src] PR #23669: Fixed bug GH-22981 (unix socket connect fails with EAGAIN when listen backlog is full) | ||
| Groups: | php.git-pulls | ||
| Request: | Send a blank email to git-pulls+get-38453@lists.php.net to get a copy of this message | ||
Pull Request: https://github.com/php/php-src/pull/23669
Author: shoutoutuoadi325
Fixes GH-22981.
php_network_connect_socket() runs the connect with the socket in
non-blocking mode so it can honour the timeout. The flip side is that
connect() to a unix domain socket returns EAGAIN as soon as the listen
backlog fills up, while a blocking connect would wait for a slot. Short
bursts of connections (PDO over a unix socket in the report) then fail
with "Resource temporarily unavailable".
Retry the connect every 10ms while it keeps returning EAGAIN, bounded by
the connect timeout if one was given, matching what a blocking connect
does. Everything else (other errors, async connects, TCP) is unchanged.
gh22981.phpt runs a server with backlog=1 that starts accepting late:
connect #3 fails before the patch, all 20 succeed after.