diff options
author | Nikos Mavrogiannopoulos | 2010-03-15 20:48:49 +0000 |
---|---|---|
committer | Nokis Mavrogiannopoulos | 2010-03-15 20:48:49 +0000 |
commit | 9085f5b533fdf85e86c9d7ab2f0f4ac4c8906e2a (patch) | |
tree | e493bf6176b6f05a1737cfcf2c5ddd14b4838981 | |
parent | dcf11188825117a0ead90b383093e87f9a6ed445 (diff) |
Corrected issue with firefox and long post data (had to do
with read function not handling EAGAIN and EINTR correctly).
-rw-r--r-- | NEWS | 14 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/gnutls_io.c | 14 |
3 files changed, 27 insertions, 3 deletions
@@ -1,8 +1,20 @@ | |||
1 | ** Version 0.5.5 (unreleased) | 1 | ** Version 0.5.6 |
2 | - Corrected issue with firefox and long POST data (by | ||
3 | handling EINTR and EAGAIN errors in read). | ||
4 | |||
5 | - Added support for chained client certificates | ||
6 | |||
7 | - Corrected more issues related to double frees | ||
8 | http://issues.outoforder.cc/view.php?id=102 | ||
9 | |||
10 | ** Version 0.5.5 (2009-06-13) | ||
2 | 11 | ||
3 | - Removed limits on CA certificate loading. Reported by | 12 | - Removed limits on CA certificate loading. Reported by |
4 | Sander Marechal and Jack Bates. | 13 | Sander Marechal and Jack Bates. |
5 | 14 | ||
15 | - Do not allow sending empty TLS packets even when instructed to. | ||
16 | This had the side effect of clients closing connection. | ||
17 | |||
6 | ** Version 0.5.4 (2009-01-04) | 18 | ** Version 0.5.4 (2009-01-04) |
7 | 19 | ||
8 | - mod_gnutls.h: modified definition to extern to avoid compilation | 20 | - mod_gnutls.h: modified definition to extern to avoid compilation |
diff --git a/configure.ac b/configure.ac index bb2aedf..54f8daa 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,5 +1,5 @@ | |||
1 | dnl | 1 | dnl |
2 | AC_INIT(mod_gnutls, 0.5.4) | 2 | AC_INIT(mod_gnutls, 0.5.5) |
3 | OOO_CONFIG_NICE(config.nice) | 3 | OOO_CONFIG_NICE(config.nice) |
4 | MOD_GNUTLS_VERSION=AC_PACKAGE_VERSION | 4 | MOD_GNUTLS_VERSION=AC_PACKAGE_VERSION |
5 | AC_PREREQ(2.53) | 5 | AC_PREREQ(2.53) |
diff --git a/src/gnutls_io.c b/src/gnutls_io.c index 15de422..8187da6 100644 --- a/src/gnutls_io.c +++ b/src/gnutls_io.c | |||
@@ -670,8 +670,15 @@ ssize_t mgs_transport_read(gnutls_transport_ptr_t ptr, | |||
670 | */ | 670 | */ |
671 | if (APR_STATUS_IS_EAGAIN(rc) || APR_STATUS_IS_EINTR(rc) | 671 | if (APR_STATUS_IS_EAGAIN(rc) || APR_STATUS_IS_EINTR(rc) |
672 | || (rc == APR_SUCCESS && APR_BRIGADE_EMPTY(ctxt->input_bb))) { | 672 | || (rc == APR_SUCCESS && APR_BRIGADE_EMPTY(ctxt->input_bb))) { |
673 | return 0; | 673 | |
674 | if (APR_STATUS_IS_EOF(ctxt->input_rc)) { | ||
675 | return 0; | ||
676 | } else { | ||
677 | gnutls_transport_set_errno(ctxt->session, EINTR); | ||
678 | return -1; | ||
679 | } | ||
674 | } | 680 | } |
681 | |||
675 | 682 | ||
676 | if (rc != APR_SUCCESS) { | 683 | if (rc != APR_SUCCESS) { |
677 | /* Unexpected errors discard the brigade */ | 684 | /* Unexpected errors discard the brigade */ |
@@ -689,6 +696,11 @@ ssize_t mgs_transport_read(gnutls_transport_ptr_t ptr, | |||
689 | 696 | ||
690 | if (APR_STATUS_IS_EAGAIN(ctxt->input_rc) | 697 | if (APR_STATUS_IS_EAGAIN(ctxt->input_rc) |
691 | || APR_STATUS_IS_EINTR(ctxt->input_rc)) { | 698 | || APR_STATUS_IS_EINTR(ctxt->input_rc)) { |
699 | if (len == 0) { | ||
700 | gnutls_transport_set_errno(ctxt->session, EINTR); | ||
701 | return -1; | ||
702 | } | ||
703 | |||
692 | return (ssize_t) len; | 704 | return (ssize_t) len; |
693 | } | 705 | } |
694 | 706 | ||