gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, master, updated. gnutls_2_9_9-52-g925e238


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, master, updated. gnutls_2_9_9-52-g925e238
Date: Thu, 21 Jan 2010 08:44:56 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=925e23875bb3b3c1ff8b287cc213982a5ff75e13

The branch, master has been updated
       via  925e23875bb3b3c1ff8b287cc213982a5ff75e13 (commit)
       via  45e05bc8f73aa8de164c8752031d86ce3816acc9 (commit)
       via  a8a617cdc53c7bac96cd781d8d8f33a89bbb7cc8 (commit)
      from  81b417e6ccdd9cc26b69b1d8855ae7bf440eebd9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 925e23875bb3b3c1ff8b287cc213982a5ff75e13
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Thu Jan 21 09:44:38 2010 +0100

    Added documentation of rehandshake usage in gnutls if full-duplex 
capability is required.

commit 45e05bc8f73aa8de164c8752031d86ce3816acc9
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Thu Jan 21 09:43:37 2010 +0100

    Reduced asserts to reduce unneeded printings.

commit a8a617cdc53c7bac96cd781d8d8f33a89bbb7cc8
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Thu Jan 21 09:42:11 2010 +0100

    Removed rehandshake initiation capability from client and transferred it
    to the echo server. Once the server receives a string **REHANDSHAKE**
    will request a rehandshake.

-----------------------------------------------------------------------

Summary of changes:
 lib/gnutls_buffers.c   |    3 ---
 lib/gnutls_handshake.c |    8 +++++++-
 src/cli.c              |   11 -----------
 src/serv.c             |   21 ++++++++++++++++++++-
 4 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c
index 53e0e67..77820f2 100644
--- a/lib/gnutls_buffers.c
+++ b/lib/gnutls_buffers.c
@@ -318,7 +318,6 @@ _gnutls_read (gnutls_session_t session, void *iptr,
 
                  goto finish;
                }
-             gnutls_assert ();
 
              if (err == EAGAIN)
                return GNUTLS_E_AGAIN;
@@ -1038,8 +1037,6 @@ _gnutls_handshake_io_recv_int (gnutls_session_t session,
              session->internals.handshake_recv_buffer_type = type;
            }
 
-         gnutls_assert ();
-
          return i;
        }
       else
diff --git a/lib/gnutls_handshake.c b/lib/gnutls_handshake.c
index b4e8164..618b20c 100644
--- a/lib/gnutls_handshake.c
+++ b/lib/gnutls_handshake.c
@@ -1257,7 +1257,6 @@ _gnutls_recv_handshake_header (gnutls_session_t session,
 
       if (ret < 0)
        {
-         gnutls_assert ();
          return ret;
        }
 
@@ -2520,6 +2519,13 @@ _gnutls_recv_hello (gnutls_session_t session, opaque * 
data, int datalen)
   * gnutls_handshake() function in order to negotiate the new
   * parameters.
   *
+  * Since TLS is full duplex some application data might have been
+  * sent during peer's processing of this message. In that case
+  * one should call gnutls_record_recv() until GNUTLS_E_REHANDSHAKE
+  * is returned to clear any pending data. Care must be taken if
+  * rehandshake is mandatory to terminate if it does not start after
+  * some threshold.
+  *
   * If the client does not wish to renegotiate parameters he will
   * should with an alert message, thus the return code will be
   * %GNUTLS_E_WARNING_ALERT_RECEIVED and the alert will be
diff --git a/src/cli.c b/src/cli.c
index 4e5bebe..2aa2da4 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -826,17 +826,6 @@ after_handshake:
              continue;
            }
 
-          if (strstr(buffer, "**REHANDSHAKE**") != NULL) {
-           fprintf (stderr, "*** Starting TLS rehandshake\n");
-           ret = do_handshake (&hd);
-           if (ret < 0)
-             {
-               fprintf (stderr, "*** Rehandshake has failed\n");
-               user_term = 1;
-               retval = 1;
-               break;
-             }
-          }
          if (crlf != 0)
            {
              char *b = strchr (buffer, '\n');
diff --git a/src/serv.c b/src/serv.c
index f8c78a6..c6abd45 100644
--- a/src/serv.c
+++ b/src/serv.c
@@ -790,6 +790,18 @@ get_response (gnutls_session_t session, char *request,
     }
   else
     {
+      fprintf(stderr, "received: %s\n", request);
+      if (request[0] == request[1] && request[0] == '*')
+        {
+          if (strncmp(request, "**REHANDSHAKE**", 
sizeof("**REHANDSHAKE**")-1)==0)
+            {
+              fprintf(stderr, "*** Sending rehandshake request\n");
+              gnutls_rehandshake(session);
+            }
+          *response = NULL;
+          *response_length = 0;
+          return;
+        }
       *response = strdup (request);
       *response_length = ((*response) ? strlen (*response) : 0);
     }
@@ -1242,6 +1254,7 @@ main (int argc, char **argv)
                  {
                    if (r == GNUTLS_E_REHANDSHAKE) 
                      {
+                       fprintf(stderr, "*** Received hello message\n");
                        do 
                          {
                            r = gnutls_handshake (j->tls_session);
@@ -1337,7 +1350,7 @@ main (int argc, char **argv)
                  }
              }
 
-           if (j->handshake_ok == 1)
+           if (j->handshake_ok == 1 && j->http_response != NULL)
              {
                /* FIXME if j->http_response == NULL? */
                r = gnutls_record_send (j->tls_session,
@@ -1389,6 +1402,12 @@ main (int argc, char **argv)
                      }
                  }
              }
+            else
+              {
+               j->request_length = 0;
+               j->http_request[0] = 0;
+                j->http_state = HTTP_STATE_REQUEST;
+              }
          }
       }
       lloopend (listener_list, j);


hooks/post-receive
-- 
GNU gnutls




reply via email to

[Prev in Thread] Current Thread [Next in Thread]