1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-20 00:21:35 +00:00

- Respect EAGAIN and retry sendfile() instead close connection.

- Remove empty lines and add two more cases to switch(errno)
- Bump PORTREVISION
This commit is contained in:
Marcus Alves Grando 2007-09-22 23:13:47 +00:00
parent 614aa6562b
commit 9afd7a7477
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=199912
2 changed files with 48 additions and 0 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= lighttpd
PORTVERSION= 1.4.18
PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= http://www.lighttpd.net/download/ \
http://mirrors.cat.pdx.edu/lighttpd/

View File

@ -0,0 +1,47 @@
#
# Respect EAGAIN and retry sendfile() instead close connection.
# Remove empty lines and add two more cases to switch(errno)
#
--- src/network_freebsd_sendfile.c.orig 2007-09-22 19:55:26.000000000 -0300
+++ src/network_freebsd_sendfile.c 2007-09-22 19:43:28.000000000 -0300
@@ -151,23 +151,23 @@
if (-1 == c->file.fd) {
if (-1 == (c->file.fd = open(c->file.name->ptr, O_RDONLY))) {
log_error_write(srv, __FILE__, __LINE__, "ss", "open failed: ", strerror(errno));
-
return -1;
}
-
#ifdef FD_CLOEXEC
fcntl(c->file.fd, F_SETFD, FD_CLOEXEC);
#endif
}
- r = 0;
-
+eagain:
/* FreeBSD sendfile() */
+ r = 0;
if (-1 == sendfile(c->file.fd, fd, offset, toSend, NULL, &r, 0)) {
switch(errno) {
case EAGAIN:
+ case EINTR:
break;
case ENOTCONN:
+ case ENOTSOCK:
return -2;
default:
log_error_write(srv, __FILE__, __LINE__, "ssd", "sendfile: ", strerror(errno), errno);
@@ -190,12 +190,10 @@
if (offset >= sce->st.st_size) {
/* file shrinked, close the connection */
errno = oerrno;
-
return -1;
}
errno = oerrno;
- return -2;
}
c->offset += r;