aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikos Mavrogiannopoulos 2010-03-15 20:48:49 +0000
committerGravatar Nokis Mavrogiannopoulos 2010-03-15 20:48:49 +0000
commit9085f5b533fdf85e86c9d7ab2f0f4ac4c8906e2a (patch)
treee493bf6176b6f05a1737cfcf2c5ddd14b4838981
parentdcf11188825117a0ead90b383093e87f9a6ed445 (diff)
Corrected issue with firefox and long post data (had to do
with read function not handling EAGAIN and EINTR correctly).
-rw-r--r--NEWS14
-rw-r--r--configure.ac2
-rw-r--r--src/gnutls_io.c14
3 files changed, 27 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 5dea61e..124f60a 100644
--- a/NEWS
+++ b/NEWS
@@ -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
8http://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 @@
1dnl 1dnl
2AC_INIT(mod_gnutls, 0.5.4) 2AC_INIT(mod_gnutls, 0.5.5)
3OOO_CONFIG_NICE(config.nice) 3OOO_CONFIG_NICE(config.nice)
4MOD_GNUTLS_VERSION=AC_PACKAGE_VERSION 4MOD_GNUTLS_VERSION=AC_PACKAGE_VERSION
5AC_PREREQ(2.53) 5AC_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