Commit Diff


commit - 2349b02b261cabf5a95215f24550c454712066f6
commit + f62aab517ddf73e0e5ea09452dab58f73315b2c8
blob - c8b40bbc13e6530e1de29567f95c519b843c94d9
blob + b126cca4c099ac3c28afbdb005d196536ed1521a
--- gg.c
+++ gg.c
@@ -112,9 +112,14 @@ main(int argc, char **argv)
 	/*	errx(1, "tls_write: %s", tls_error(ctx)); */
 
 	for (;;) {
-		len = tls_read(ctx, buf, sizeof(buf));
-		if (len == 0 || len == -1)
-			break;
+		switch (len = tls_read(ctx, buf, sizeof(buf))) {
+		case 0:
+		case -1:
+			goto end;
+		case TLS_WANT_POLLIN:
+		case TLS_WANT_POLLOUT:
+			continue;
+		}
 
 		if (bflag) {
 			bflag = 0;
@@ -148,6 +153,7 @@ main(int argc, char **argv)
 
 		write(1, buf, len);
 	}
+end:
 
 	tls_close(ctx);
 	tls_free(ctx);