summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-01-21 09:42:11 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-01-21 09:42:11 +0100
commita8a617cdc53c7bac96cd781d8d8f33a89bbb7cc8 (patch)
tree6271b8ac5ca3ce9ebb12e816474ab639283d75ab /src
parent81b417e6ccdd9cc26b69b1d8855ae7bf440eebd9 (diff)
downloadgnutls-a8a617cdc53c7bac96cd781d8d8f33a89bbb7cc8.tar.gz
Removed rehandshake initiation capability from client and transferred it
to the echo server. Once the server receives a string **REHANDSHAKE** will request a rehandshake.
Diffstat (limited to 'src')
-rw-r--r--src/cli.c11
-rw-r--r--src/serv.c21
2 files changed, 20 insertions, 12 deletions
diff --git a/src/cli.c b/src/cli.c
index 4e5bebe9d6..2aa2da4197 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 f8c78a6be8..c6abd45f7a 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);