summaryrefslogtreecommitdiff
path: root/doc/examples/ex-serv-x509.c
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples/ex-serv-x509.c')
-rw-r--r--doc/examples/ex-serv-x509.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/doc/examples/ex-serv-x509.c b/doc/examples/ex-serv-x509.c
index c2545a6688..df57207140 100644
--- a/doc/examples/ex-serv-x509.c
+++ b/doc/examples/ex-serv-x509.c
@@ -22,6 +22,10 @@
#define CRLFILE "crl.pem"
#define CHECK(x) assert((x)>=0)
+#define LOOP_CHECK(rval, cmd) \
+ do { \
+ rval = cmd; \
+ } while(rval == GNUTLS_E_AGAIN || rval == GNUTLS_E_INTERRUPTED)
/* The OCSP status file contains up to date information about revocation
* of the server's certificate. That can be periodically be updated
@@ -137,11 +141,7 @@ int main(void)
gnutls_transport_set_int(session, sd);
- do {
- ret = gnutls_handshake(session);
- }
- while (ret < 0 && gnutls_error_is_fatal(ret) == 0);
-
+ LOOP_CHECK(ret, gnutls_handshake(session));
if (ret < 0) {
close(sd);
gnutls_deinit(session);
@@ -156,7 +156,7 @@ int main(void)
/* print_info(session); */
for (;;) {
- ret = gnutls_record_recv(session, buffer, MAX_BUF);
+ LOOP_CHECK(ret, gnutls_record_recv(session, buffer, MAX_BUF));
if (ret == 0) {
printf
@@ -180,7 +180,7 @@ int main(void)
printf("\n");
/* do not wait for the peer to close the connection.
*/
- CHECK(gnutls_bye(session, GNUTLS_SHUT_WR));
+ LOOP_CHECK(ret, gnutls_bye(session, GNUTLS_SHUT_WR));
close(sd);
gnutls_deinit(session);