summaryrefslogtreecommitdiff
path: root/tests/eagain-common.h
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2011-04-04 22:02:27 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2011-04-04 22:02:27 +0200
commitef11a5ad23c899f1b739b02aabe983238a9773f2 (patch)
tree5aa0050c9505e020f9ef3d38131d7ffc518e4807 /tests/eagain-common.h
parentca41fc31917d97f4a6b9aa8323a1317c1657d9af (diff)
downloadgnutls-ef11a5ad23c899f1b739b02aabe983238a9773f2.tar.gz
The mini-* programs were combined.
Diffstat (limited to 'tests/eagain-common.h')
-rw-r--r--tests/eagain-common.h86
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;