diff -wrud lighttpd-1.3.13/src/network.c lighttpd-1.3.13.hacked/src/network.c --- lighttpd-1.3.13/src/network.c 2005-03-01 18:55:41.000000000 -0400 +++ lighttpd-1.3.13.hacked/src/network.c 2005-03-14 15:42:58.543182586 -0400 @@ -423,6 +423,9 @@ int network_write_chunkqueue(server *srv, connection *con, chunkqueue *cq) { int ret = -1, i; off_t written = 0; +#ifdef TCP_CORK + int corked = 0; +#endif server_socket *srv_socket = con->srv_socket; @@ -440,8 +443,10 @@ #ifdef TCP_CORK /* Linux: put a cork into the socket as we want to combine the write() calls */ - i = 1; - setsockopt(con->fd, IPPROTO_TCP, TCP_CORK, &i, sizeof(i)); + if (cq->first->next) { + corked = 1; + setsockopt(con->fd, IPPROTO_TCP, TCP_CORK, &corked, sizeof(corked)); + } #endif if (srv_socket->is_ssl) { @@ -507,8 +512,10 @@ } #ifdef TCP_CORK - i = 0; - setsockopt(con->fd, IPPROTO_TCP, TCP_CORK, &i, sizeof(i)); + if (corked) { + corked = 0; + setsockopt(con->fd, IPPROTO_TCP, TCP_CORK, &corked, sizeof(corked)); + } #endif written = con->bytes_written - written;