diff options
Diffstat (limited to 'res/res_pjsip_transport_websocket.c')
-rw-r--r-- | res/res_pjsip_transport_websocket.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/res/res_pjsip_transport_websocket.c b/res/res_pjsip_transport_websocket.c index cdf6c6733..b9d94ea3c 100644 --- a/res/res_pjsip_transport_websocket.c +++ b/res/res_pjsip_transport_websocket.c @@ -275,24 +275,27 @@ static int transport_read(void *data) static int get_write_timeout(void) { int write_timeout = -1; - struct ao2_container *transports; + struct ao2_container *transport_states; - transports = ast_sorcery_retrieve_by_fields(ast_sip_get_sorcery(), "transport", AST_RETRIEVE_FLAG_ALL, NULL); + transport_states = ast_sip_get_transport_states(); - if (transports) { - struct ao2_iterator it_transports = ao2_iterator_init(transports, 0); - struct ast_sip_transport *transport; + if (transport_states) { + struct ao2_iterator it_transport_states = ao2_iterator_init(transport_states, 0); + struct ast_sip_transport_state *transport_state; - for (; (transport = ao2_iterator_next(&it_transports)); ao2_cleanup(transport)) { - if (transport->type != AST_TRANSPORT_WS && transport->type != AST_TRANSPORT_WSS) { + for (; (transport_state = ao2_iterator_next(&it_transport_states)); ao2_cleanup(transport_state)) { + struct ast_sip_transport *transport; + if (transport_state->type != AST_TRANSPORT_WS && transport_state->type != AST_TRANSPORT_WSS) { continue; } + transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", transport_state->id); ast_debug(5, "Found %s transport with write timeout: %d\n", transport->type == AST_TRANSPORT_WS ? "WS" : "WSS", transport->write_timeout); write_timeout = MAX(write_timeout, transport->write_timeout); } - ao2_cleanup(transports); + ao2_iterator_destroy(&it_transport_states); + ao2_cleanup(transport_states); } if (write_timeout < 0) { |