aboutsummaryrefslogtreecommitdiff
path: root/tests/tls.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-07-31 12:33:58 -0700
committerGarrett D'Amore <garrett@damore.org>2018-08-05 18:45:04 +0300
commitd7f7c896c0ede24249ef63b1e45b1878bf4bd473 (patch)
tree32eece7d91a648f24cb174096fb9667cab978f37 /tests/tls.c
parentccc24a8e508131a2226474642a038baaa2cbcc8c (diff)
downloadnng-d7f7c896c0ede24249ef63b1e45b1878bf4bd473.tar.gz
nng-d7f7c896c0ede24249ef63b1e45b1878bf4bd473.tar.bz2
nng-d7f7c896c0ede24249ef63b1e45b1878bf4bd473.zip
fixes #599 nng_dial sync should not return until added to socket
fixes #208 pipe start should occur before connect / accept fixes #616 Race condition closing between header & body This refactors the transports to handle their own connection handshaking before passing the pipe to the socket. This changes and simplifies the setup. This also fixes a rather challenging race condition described by #616.
Diffstat (limited to 'tests/tls.c')
-rw-r--r--tests/tls.c35
1 files changed, 25 insertions, 10 deletions
diff --git a/tests/tls.c b/tests/tls.c
index 1f1f244c..01e49aa7 100644
--- a/tests/tls.c
+++ b/tests/tls.c
@@ -265,7 +265,6 @@ init_listener_tls_file(nng_listener l)
}
TestMain("TLS Transport", {
-
static trantest tt;
tt.dialer_init = init_dialer_tls;
@@ -291,28 +290,39 @@ TestMain("TLS Transport", {
});
Convey("We can bind to wild card", {
- nng_socket s1;
- nng_socket s2;
- char addr[NNG_MAXADDRLEN];
+ nng_socket s1;
+ nng_socket s2;
+ char addr[NNG_MAXADDRLEN];
+ nng_listener l;
+ nng_dialer d;
So(nng_tls_register() == 0);
+
So(nng_pair_open(&s1) == 0);
So(nng_pair_open(&s2) == 0);
+
Reset({
nng_close(s2);
nng_close(s1);
});
trantest_next_address(addr, "tls+tcp://*:%u");
- So(nng_listen(s1, addr, NULL, 0) == 0);
- // reset port back one
+ So(nng_listener_create(&l, s1, addr) == 0);
+ So(init_listener_tls(l) == 0);
trantest_prev_address(addr, "tls+tcp://127.0.0.1:%u");
- So(nng_dial(s2, addr, NULL, 0) == 0);
+ So(nng_dialer_create(&d, s2, addr) == 0);
+ So(init_dialer_tls(d) == 0);
+ So(nng_dialer_setopt_int(
+ d, NNG_OPT_TLS_AUTH_MODE, NNG_TLS_AUTH_MODE_NONE) == 0);
+
+ So(nng_listener_start(l, 0) == 0);
+ So(nng_dialer_start(d, 0) == 0);
});
Convey("We can bind to port zero", {
nng_socket s1;
nng_socket s2;
nng_listener l;
+ nng_dialer d;
char * addr;
size_t sz;
@@ -323,10 +333,16 @@ TestMain("TLS Transport", {
nng_close(s2);
nng_close(s1);
});
- So(nng_listen(s1, "tls+tcp://127.0.0.1:0", &l, 0) == 0);
+ So(nng_listener_create(&l, s1, "tls+tcp://127.0.0.1:0") == 0);
+ So(init_listener_tls(l) == 0);
+ So(nng_listener_start(l, 0) == 0);
sz = NNG_MAXADDRLEN;
So(nng_listener_getopt_string(l, NNG_OPT_URL, &addr) == 0);
- So(nng_dial(s2, addr, NULL, 0) == 0);
+ So(nng_dialer_create(&d, s2, addr) == 0);
+ So(init_dialer_tls(d) == 0);
+ So(nng_dialer_setopt_int(
+ d, NNG_OPT_TLS_AUTH_MODE, NNG_TLS_AUTH_MODE_NONE) == 0);
+ So(nng_dialer_start(d, 0) == 0);
nng_strfree(addr);
});
@@ -572,5 +588,4 @@ TestMain("TLS Transport", {
So(nng_dialer_getopt_bool(d, NNG_OPT_TCP_KEEPALIVE, &v) == 0);
So(v == true);
});
-
})