diff options
Diffstat (limited to 'pjnath/src')
-rw-r--r-- | pjnath/src/pjnath-test/concur_test.c | 3 | ||||
-rw-r--r-- | pjnath/src/pjnath-test/test.c | 15 | ||||
-rw-r--r-- | pjnath/src/pjnath-test/test.h | 1 |
3 files changed, 19 insertions, 0 deletions
diff --git a/pjnath/src/pjnath-test/concur_test.c b/pjnath/src/pjnath-test/concur_test.c index d30b5ebd..f04cdff9 100644 --- a/pjnath/src/pjnath-test/concur_test.c +++ b/pjnath/src/pjnath-test/concur_test.c @@ -263,6 +263,9 @@ static int stun_destroy_test(void) status = pj_sock_bind(test_sess.server_sock, &bind_addr, pj_sockaddr_get_len(&bind_addr)); pj_assert(status == PJ_SUCCESS); + /* Set socket to nonblocking to avoid stuck in recv/recvfrom() on concurrent events */ + app_set_sock_nb(test_sess.server_sock); + addr_len = sizeof(bind_addr); status = pj_sock_getsockname(test_sess.server_sock, &bind_addr, &addr_len); pj_assert(status == PJ_SUCCESS); diff --git a/pjnath/src/pjnath-test/test.c b/pjnath/src/pjnath-test/test.c index dd3e192d..e3d1a102 100644 --- a/pjnath/src/pjnath-test/test.c +++ b/pjnath/src/pjnath-test/test.c @@ -19,6 +19,7 @@ */ #include "test.h" #include <pjlib.h> +#include <pj/compat/socket.h> void app_perror(const char *msg, pj_status_t rc) { @@ -30,6 +31,20 @@ void app_perror(const char *msg, pj_status_t rc) PJ_LOG(1,("test", "%s: [pj_status_t=%d] %s", msg, rc, errbuf)); } +/* Set socket to nonblocking. */ +void app_set_sock_nb(pj_sock_t sock) +{ +#if defined(PJ_WIN32) && PJ_WIN32!=0 || \ + defined(PJ_WIN64) && PJ_WIN64 != 0 || \ + defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0 + u_long value = 1; + ioctlsocket(sock, FIONBIO, &value); +#else + pj_uint32_t value = 1; + ioctl(sock, FIONBIO, &value); +#endif +} + pj_status_t create_stun_config(pj_pool_t *pool, pj_stun_config *stun_cfg) { pj_ioqueue_t *ioqueue; diff --git a/pjnath/src/pjnath-test/test.h b/pjnath/src/pjnath-test/test.h index 71d82315..455c8a94 100644 --- a/pjnath/src/pjnath-test/test.h +++ b/pjnath/src/pjnath-test/test.h @@ -44,6 +44,7 @@ int concur_test(void); int test_main(void); extern void app_perror(const char *title, pj_status_t rc); +extern void app_set_sock_nb(pj_sock_t sock); extern pj_pool_factory *mem; int ice_one_conc_test(pj_stun_config *stun_cfg, int err_quit); |