summaryrefslogtreecommitdiff
path: root/res/res_pjsip_transport_websocket.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip_transport_websocket.c')
-rw-r--r--res/res_pjsip_transport_websocket.c19
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) {