diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-04 22:02:27 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-04 22:02:27 +0200 |
commit | ef11a5ad23c899f1b739b02aabe983238a9773f2 (patch) | |
tree | 5aa0050c9505e020f9ef3d38131d7ffc518e4807 /tests/eagain-common.h | |
parent | ca41fc31917d97f4a6b9aa8323a1317c1657d9af (diff) | |
download | gnutls-ef11a5ad23c899f1b739b02aabe983238a9773f2.tar.gz |
The mini-* programs were combined.
Diffstat (limited to 'tests/eagain-common.h')
-rw-r--r-- | tests/eagain-common.h | 86 |
1 files changed, 85 insertions, 1 deletions
diff --git a/tests/eagain-common.h b/tests/eagain-common.h index 5fb436e453..0cb76eeefe 100644 --- a/tests/eagain-common.h +++ b/tests/eagain-common.h @@ -1,6 +1,90 @@ #define min(x,y) ((x)<(y)?(x):(y)) //#define EAGAIN_DEBUG -#define RANDOMIZE + +#define HANDSHAKE(c, s) \ + sret = cret = GNUTLS_E_AGAIN; \ + do \ + { \ + if (cret == GNUTLS_E_AGAIN) \ + { \ + cret = gnutls_handshake (c); \ + } \ + if (sret == GNUTLS_E_AGAIN) \ + { \ + sret = gnutls_handshake (s); \ + } \ + } \ + while (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN); \ + if (cret < 0 || sret < 0) \ + { \ + fprintf(stderr, "client: %s\n", gnutls_strerror(cret)); \ + fprintf(stderr, "server: %s\n", gnutls_strerror(sret)); \ + fail("Handshake failed\n"); \ + exit(1); \ + } + +#define TRANSFER(c, s, msg, msglen, buf, buflen) \ + do \ + { \ + ret = gnutls_record_send (c, msg, msglen); \ + } \ + while(ret == GNUTLS_E_AGAIN); \ + do \ + { \ + do \ + { \ + ret = gnutls_record_recv (s, buf, buflen); \ + } \ + while(ret == GNUTLS_E_AGAIN); \ + if (ret == 0) \ + fail ("server: didn't receive any data\n"); \ + else if (ret < 0) \ + { \ + fail ("server: error: %s\n", gnutls_strerror (ret)); \ + } \ + else \ + { \ + transferred += ret; \ + } \ + do \ + { \ + ns = gnutls_record_send (server, msg, msglen); \ + } \ + while (ns == GNUTLS_E_AGAIN); \ + do \ + { \ + ret = gnutls_record_recv (client, buf, buflen); \ + } \ + while(ret == GNUTLS_E_AGAIN); \ + if (ret == 0) \ + { \ + fail ("client: Peer has closed the TLS connection\n"); \ + } \ + else if (ret < 0) \ + { \ + if (debug) \ + fputs ("!", stdout); \ + fail ("client: Error: %s\n", gnutls_strerror (ret)); \ + } \ + else \ + { \ + if (msglen != ret || memcmp (buf, msg, msglen) != 0) \ + { \ + fail ("client: Transmitted data do not match\n"); \ + } \ + /* echo back */ \ + do \ + { \ + ns = gnutls_record_send (client, buf, msglen); \ + } \ + while (ns == GNUTLS_E_AGAIN); \ + transferred += ret; \ + if (debug) \ + fputs (".", stdout); \ + } \ + } \ + while (transferred < 70000) + static char to_server[64*1024]; static size_t to_server_len = 0; |