summaryrefslogtreecommitdiff
path: root/www/lighttpd/files
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/files
parent- Update to 1.10.2 (diff)
- Respect EAGAIN and retry sendfile() instead close connection.
- Remove empty lines and add two more cases to switch(errno) - Bump PORTREVISION
Diffstat (limited to 'www/lighttpd/files')
-rw-r--r--www/lighttpd/files/patch-src__network_freebsd_sendfile.c47
1 files changed, 47 insertions, 0 deletions
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;