diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-07-31 12:33:58 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-08-05 18:45:04 +0300 |
| commit | d7f7c896c0ede24249ef63b1e45b1878bf4bd473 (patch) | |
| tree | 32eece7d91a648f24cb174096fb9667cab978f37 /tests | |
| parent | ccc24a8e508131a2226474642a038baaa2cbcc8c (diff) | |
| download | nng-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')
| -rw-r--r-- | tests/tls.c | 35 |
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); }); - }) |
