From b0f31f578b0669b598d3ded3a625685b125bef1d Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Tue, 3 Oct 2017 20:28:09 -0700 Subject: Improve UDP test coverage, fix numerous issues found. We introduced richer, deeper tests for UDP functionality. These tests uncovered a number of issues which this commit fixes. The Windows IOCP code needs to support multiple aios on a single nni_win_event. A redesign of the IOCP handling addresses that. The POSIX UDP code also needed fixes; foremost among them is the fact that the UDP file descriptor is not placed into non-blocking mode, leading to potential hangs. A number of race conditions and bugs along the implementation of the above items were uncovered and fixed. To the best of our knowledge the current code is bug-free. --- src/platform/windows/win_impl.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/platform/windows/win_impl.h') diff --git a/src/platform/windows/win_impl.h b/src/platform/windows/win_impl.h index c2549266..236feb31 100644 --- a/src/platform/windows/win_impl.h +++ b/src/platform/windows/win_impl.h @@ -63,13 +63,15 @@ struct nni_win_event_ops { struct nni_win_event { OVERLAPPED olpd; void * ptr; - nni_aio * aio; nni_mtx mtx; nni_cv cv; unsigned run : 1; unsigned fini : 1; + unsigned closed : 1; unsigned count; int status; + nni_list aios; + nni_aio * active; nni_win_event_ops ops; }; -- cgit v1.2.3-70-g09d2