summaryrefslogtreecommitdiff
path: root/src/network_openssl.c
diff options
context:
space:
mode:
authorArno Töll <arno@debian.org>2012-11-21 23:03:51 +0100
committerArno Töll <arno@debian.org>2012-11-21 23:03:51 +0100
commitf1532bfdd56dc641ae366f6ecd4c490c11117aac (patch)
treee58012163da210efa84fdbdcefd069ee511fd3e4 /src/network_openssl.c
parent3f9e670856f606be4d9899e2d2a9ed4708575f10 (diff)
downloadlighttpd-f1532bfdd56dc641ae366f6ecd4c490c11117aac.tar.gz
Imported Upstream version 1.4.19upstream/1.4.19
Diffstat (limited to 'src/network_openssl.c')
-rw-r--r--src/network_openssl.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/src/network_openssl.c b/src/network_openssl.c
index e6df35e..ff9fb97 100644
--- a/src/network_openssl.c
+++ b/src/network_openssl.c
@@ -58,31 +58,6 @@ int network_write_chunkqueue_openssl(server *srv, connection *con, SSL *ssl, chu
SSL_set_shutdown(ssl, SSL_RECEIVED_SHUTDOWN);
}
- /* evil hack for opera 9.01 and 8.54 and earlier
- *
- * opera hangs if the trainling 0\r\n\r\n is in a seperate SSL-packet
- *
- * we try to move the packet into the previous mem-chunk if possible
- */
- if ((cq == con->write_queue) &&
- (con->response.transfer_encoding & HTTP_TRANSFER_ENCODING_CHUNKED) &&
- (con->file_finished)) {
- /* merge the last chunk into the previous chunk */
-
- for(c = cq->first; c && c->next && c->next->next; c = c->next);
-
- if (c &&
- c->type == MEM_CHUNK &&
- c->next &&
- c->next->type == MEM_CHUNK &&
- c->next->mem->used == sizeof("0\r\n\r\n") &&
- 0 == strcmp(c->next->mem->ptr, "0\r\n\r\n")) {
- buffer_append_string_buffer(c->mem, c->next->mem);
-
- c->next->mem->used = 0;
- }
- }
-
for(c = cq->first; c; c = c->next) {
int chunk_finished = 0;
@@ -128,6 +103,7 @@ int network_write_chunkqueue_openssl(server *srv, connection *con, SSL *ssl, chu
/* no, but we have errno */
switch(errno) {
case EPIPE:
+ case ECONNRESET:
return -2;
default:
log_error_write(srv, __FILE__, __LINE__, "sddds", "SSL:",
@@ -230,6 +206,7 @@ int network_write_chunkqueue_openssl(server *srv, connection *con, SSL *ssl, chu
/* no, but we have errno */
switch(errno) {
case EPIPE:
+ case ECONNRESET:
return -2;
default:
log_error_write(srv, __FILE__, __LINE__, "sddds", "SSL:",