Source: apr Version: 1.4.8-1 Severity: important Tags: patch User: debian-h...@lists.debian.org Usertags: hurd
Hi, the new version of apr fails to build on hurd-i386 [1]. During the build, the configure test for accept4 gets stuck, and thus the build is then killed after the timeout. What happens is that inside the test the connect in the child fails with an errno not checked among the ones to retry the connect again; such errno (EADDRNOTAVAIL) may be returned while the bind operation (in the parent) is in progress (at least on Hurd), so just check it too (it is a valid errno for connect [2]) and continue connect'ing. (Ideally, instead of retrying continuously, a better solution could be have the parent notify to the child using e.g. a pipe just before the listen. OTOH, since this is a simple configure check just to check that accept4 works, the loop may be an acceptable solution.) Patch attached for the additional EADDRNOTAVAIL check. [1] https://buildd.debian.org/status/logs.php?pkg=apr&ver=1.4.8-1&arch=hurd-i386 [2] http://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html Thanks, -- Pino
Author: Pino Toscano <p...@debian.org> Description: accept4 test: skip EADDRNOTAVAIL connect errors In the configure test for accept4, skip also the EADDRNOTAVAIL errno of connect in the child, which can happen when trying to connect while the parent is bind'ing the socket. Last-Update: 2013-07-05 --- a/configure.in +++ b/configure.in @@ -938,7 +938,7 @@ cleanup_failure2: while(connect(fd, (struct sockaddr *) &loc, sizeof(struct sockaddr_un)) == -1 && - (errno==ENOENT || errno==ECONNREFUSED)) + (errno==ENOENT || errno==ECONNREFUSED || errno==EADDRNOTAVAIL)) ; close(fd);