Module: sip-router
Branch: andrei/tcp_tls_changes
Commit: 813284bad28a11c985cbd4ce370fdee98c815e88
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=813284bad28a11c985cbd4ce370fdee98c815e88

Author: Andrei Pelinescu-Onciul <and...@iptel.org>
Committer: Andrei Pelinescu-Onciul <and...@iptel.org>
Date:   Fri Jul  9 20:03:45 2010 +0200

tls: partial SSL_write support when reading (tls_read_f)

When writing-on-read (due to queued send data waiting for a
renegotiation to complete), retry the write if it did not have
enough buffer space to complete (after freeing the buffer space by
 tcp_send-ing its content).

---

 modules/tls/tls_server.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/modules/tls/tls_server.c b/modules/tls/tls_server.c
index 8d45b53..122141e 100644
--- a/modules/tls/tls_server.c
+++ b/modules/tls/tls_server.c
@@ -1151,9 +1151,15 @@ ssl_read_skipped:
                        }
                        goto end; /* no more data to read */
                case SSL_ERROR_WANT_WRITE:
-                       /* write buffer too small, nothing written */
+                       if (wr.used) {
+                               /* something was written => buffer not big 
enough to hold
+                                  everything => reset buffer & retry (the 
tcp_write already
+                                  happened if we are here) */
+                               goto continue_ssl_read;
+                       }
+                       /* else write buffer too small, nothing written */
                        BUG("write buffer too small (%d/%d bytes)\n",
-                                       wr.used, wr.size);
+                                               wr.used, wr.size);
                        goto bug;
                case SSL_ERROR_SSL:
                        /* protocol level error */


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to