diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-01-21 09:42:11 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-01-21 09:42:11 +0100 |
commit | a8a617cdc53c7bac96cd781d8d8f33a89bbb7cc8 (patch) | |
tree | 6271b8ac5ca3ce9ebb12e816474ab639283d75ab /src | |
parent | 81b417e6ccdd9cc26b69b1d8855ae7bf440eebd9 (diff) | |
download | gnutls-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.c | 11 | ||||
-rw-r--r-- | src/serv.c | 21 |
2 files changed, 20 insertions, 12 deletions
@@ -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); |