@@ -40,7 +40,10 @@ on_ack (udx_stream_write_t *req, int status, int unordered) {
4040 assert (status == 0 );
4141 // assert(unordered == 0);
4242
43- uv_stop (& loop );
43+ udx_stream_destroy (& astream );
44+ udx_stream_destroy (& bstream );
45+ udx_stream_destroy (& cstream );
46+ udx_stream_destroy (& dstream );
4447
4548 ack_called = true;
4649}
@@ -59,6 +62,16 @@ on_read (udx_stream_t *handle, ssize_t read_len, const uv_buf_t *buf) {
5962 read_called = true;
6063}
6164
65+ int nclosed ;
66+ void
67+ on_close (udx_stream_t * s , int err ) {
68+ nclosed ++ ;
69+
70+ if (nclosed == 4 ) {
71+ uv_stop (& loop );
72+ }
73+ }
74+
6275int
6376main () {
6477
@@ -98,16 +111,16 @@ main () {
98111 e = udx_socket_bind (& dsock , (struct sockaddr * ) & daddr , 0 );
99112 assert (e == 0 );
100113
101- e = udx_stream_init (& udx , & astream , 1 , NULL , NULL );
114+ e = udx_stream_init (& udx , & astream , 1 , on_close , NULL );
102115 assert (e == 0 );
103116
104- e = udx_stream_init (& udx , & bstream , 2 , NULL , NULL );
117+ e = udx_stream_init (& udx , & bstream , 2 , on_close , NULL );
105118 assert (e == 0 );
106119
107- e = udx_stream_init (& udx , & cstream , 3 , NULL , NULL );
120+ e = udx_stream_init (& udx , & cstream , 3 , on_close , NULL );
108121 assert (e == 0 );
109122
110- e = udx_stream_init (& udx , & dstream , 4 , NULL , NULL );
123+ e = udx_stream_init (& udx , & dstream , 4 , on_close , NULL );
111124 assert (e == 0 );
112125
113126 e = udx_stream_relay_to (& cstream , & bstream );
0 commit comments