Author: aredridel Date: Thu Aug 25 06:39:54 2005 GMT Module: SOURCES Tag: HEAD ---- Log message: - fixes infinite loop on slow connection over SSL
---- Files affected: SOURCES: lighttpd-openssl.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: SOURCES/lighttpd-openssl.patch diff -u /dev/null SOURCES/lighttpd-openssl.patch:1.1 --- /dev/null Thu Aug 25 08:39:54 2005 +++ SOURCES/lighttpd-openssl.patch Thu Aug 25 08:39:49 2005 @@ -0,0 +1,67 @@ +--- branches/lighttpd-merge-1.4.x/src/connections.c (revision 620) ++++ branches/lighttpd-merge-1.4.x/src/connections.c (revision 621) +@@ -213,7 +213,7 @@ + + #ifdef USE_OPENSSL + if (srv_sock->is_ssl) { +- int r; ++ int r, ssl_err; + + switch ((r = SSL_get_error(con->ssl, len))) { + case SSL_ERROR_WANT_READ: +@@ -237,8 +237,15 @@ + + /* fall thourgh */ + default: +- log_error_write(srv, __FILE__, __LINE__, "sds", "SSL:", +- r, ERR_error_string(ERR_get_error(), NULL)); ++ ssl_err = ERR_get_error(); ++ switch(ssl_err) { ++ case SSL_F_SSL23_GET_CLIENT_HELLO: ++ /* a unencrypted HTTP request on a HTTPS socket. Do a redirect to the right location */ ++ default: ++ log_error_write(srv, __FILE__, __LINE__, "sds", "SSL:", ++ r, ERR_error_string(ERR_get_error(), NULL)); ++ break; ++ } + break; + } + } else { +--- branches/lighttpd-merge-1.4.x/src/mod_compress.c (revision 620) ++++ branches/lighttpd-merge-1.4.x/src/mod_compress.c (revision 621) +@@ -357,7 +357,7 @@ + + if (-1 == mkdir(p->b->ptr, 0700)) { + if (errno != EEXIST) { +- log_error_write(srv, __FILE__, __LINE__, "ssss", "creating cache-directory", p->b->ptr, "failed", strerror(errno)); ++ log_error_write(srv, __FILE__, __LINE__, "sbss", "creating cache-directory", p->b, "failed", strerror(errno)); + + return -1; + } +--- branches/lighttpd-merge-1.4.x/src/network_openssl.c (revision 620) ++++ branches/lighttpd-merge-1.4.x/src/network_openssl.c (revision 621) +@@ -123,6 +123,7 @@ + size_t toSend; + stat_cache_entry *sce = NULL; + int ifd; ++ int write_wait = 0; + + if (HANDLER_ERROR == stat_cache_get_entry(srv, con, c->data.file.name, &sce)) { + log_error_write(srv, __FILE__, __LINE__, "sb", +@@ -162,6 +163,7 @@ + if ((r = SSL_write(con->ssl, s, toSend)) <= 0) { + switch ((ssl_r = SSL_get_error(con->ssl, r))) { + case SSL_ERROR_WANT_WRITE: ++ write_wait = 1; + break; + case SSL_ERROR_SYSCALL: + switch(errno) { +@@ -196,7 +198,7 @@ + if (c->offset == c->data.file.length) { + chunk_finished = 1; + } +- } while(!chunk_finished); ++ } while(!chunk_finished && !write_wait); + + break; + } ================================================================ _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit