]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Removed rehandshake initiation capability from client and transferred it
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 21 Jan 2010 08:42:11 +0000 (09:42 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 21 Jan 2010 08:42:11 +0000 (09:42 +0100)
to the echo server. Once the server receives a string **REHANDSHAKE**
will request a rehandshake.

src/cli.c
src/serv.c

index 4e5bebe9d6fa6a53e6c160c6d5838d4521676ec4..2aa2da41978f32d2d4d38fe5c7e2dc2dfe1fa1bd 100644 (file)
--- 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');
index f8c78a6be82cbeb45001346ecb62581f3dacb4f9..c6abd45f7ae289e5ada9a753b8ef905fdb0b1285 100644 (file)
@@ -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);