aboutsummaryrefslogtreecommitdiff
path: root/www/lighttpd
diff options
context:
space:
mode:
authorMarcus Alves Grando <mnag@FreeBSD.org>2007-09-22 23:13:47 +0000
committerMarcus Alves Grando <mnag@FreeBSD.org>2007-09-22 23:13:47 +0000
commit9afd7a7477cbb1fe82782ef4a879101526c52b2e (patch)
treecb3b98e6c006420efdea82a2941650e9555ea164 /www/lighttpd
parent614aa6562b38a838e679cc53f87de5ddef46e617 (diff)
downloadports-9afd7a7477cbb1fe82782ef4a879101526c52b2e.tar.gz
ports-9afd7a7477cbb1fe82782ef4a879101526c52b2e.zip
Notes
Diffstat (limited to 'www/lighttpd')
-rw-r--r--www/lighttpd/Makefile1
-rw-r--r--www/lighttpd/files/patch-src__network_freebsd_sendfile.c47
2 files changed, 48 insertions, 0 deletions
diff --git a/www/lighttpd/Makefile b/www/lighttpd/Makefile
index 04ef381e85ef..60294f51b2ea 100644
--- a/www/lighttpd/Makefile
+++ b/www/lighttpd/Makefile
@@ -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/
diff --git a/www/lighttpd/files/patch-src__network_freebsd_sendfile.c b/www/lighttpd/files/patch-src__network_freebsd_sendfile.c
new file mode 100644
index 000000000000..cfa1f1083818
--- /dev/null
+++ b/www/lighttpd/files/patch-src__network_freebsd_sendfile.c
@@ -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;