diff --git a/channels/chan_sip.c b/channels/chan_sip.c index c3e775de28..9844fa9628 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -9394,6 +9394,9 @@ static int sip_register(const char *value, int lineno) return -1; } + reg->expire = -1; + reg->timeout = -1; + if (ast_string_field_init(reg, 256)) { ao2_t_ref(reg, -1, "failed to string_field_init, drop reg"); return -1; @@ -9467,6 +9470,8 @@ static int sip_subscribe_mwi(const char *value, int lineno) return -1; } + mwi->resub = -1; + if (ast_string_field_init(mwi, 256)) { ao2_t_ref(mwi, -1, "failed to string_field_init, drop mwi"); return -1; @@ -9481,7 +9486,6 @@ static int sip_subscribe_mwi(const char *value, int lineno) } ast_string_field_set(mwi, hostname, hostname); ast_string_field_set(mwi, mailbox, mailbox); - mwi->resub = -1; mwi->portno = portnum; mwi->transport = transport; diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index b68a84d86c..72a53fa18c 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -1365,6 +1365,12 @@ static int gendigittimeout = 8000; /* How long to wait for an extra digit, if there is an ambiguous match */ static int matchdigittimeout = 3000; +/*! + * To apease the stupid compiler option on ast_sched_del() + * since we don't care about the return value. + */ +static int not_used; + #define SUBSTATE_UNSET 0 #define SUBSTATE_OFFHOOK 1 #define SUBSTATE_ONHOOK 2 @@ -2264,10 +2270,10 @@ static int skinny_register(struct skinny_req *req, struct skinnysession *s) int instance; int res = -1; - if (s->auth_timeout_sched && ast_sched_del(sched, s->auth_timeout_sched)) { - return 0; + if (-1 < s->auth_timeout_sched) { + not_used = ast_sched_del(sched, s->auth_timeout_sched); + s->auth_timeout_sched = -1; } - s->auth_timeout_sched = 0; AST_LIST_LOCK(&devices); AST_LIST_TRAVERSE(&devices, d, list){ @@ -5583,6 +5589,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state) sub->cfwd_sched = -1; } else if (state == SUBSTATE_ONHOOK) { skinny_sched_del(sub->cfwd_sched, sub); + sub->cfwd_sched = -1; } } @@ -6182,9 +6189,7 @@ static int handle_ip_port_message(struct skinny_req *req, struct skinnysession * static void handle_keepalive_message(struct skinny_req *req, struct skinnysession *s) { - if (ast_sched_del(sched, s->keepalive_timeout_sched)) { - return; - } + not_used = ast_sched_del(sched, s->keepalive_timeout_sched); #ifdef AST_DEVMODE { @@ -7427,7 +7432,7 @@ static int skinny_noauth_cb(const void *data) { struct skinnysession *s = (struct skinnysession *)data; ast_log(LOG_WARNING, "Skinny Client failed to authenticate in %d seconds (SCHED %d)\n", auth_timeout, s->auth_timeout_sched); - s->auth_timeout_sched = 0; + s->auth_timeout_sched = -1; end_session(s); return 0; } @@ -7436,7 +7441,7 @@ static int skinny_nokeepalive_cb(const void *data) { struct skinnysession *s = (struct skinnysession *)data; ast_log(LOG_WARNING, "Skinny Client failed to send keepalive in last %d seconds (SCHED %d)\n", keep_alive*3, s->keepalive_timeout_sched); - s->keepalive_timeout_sched = 0; + s->keepalive_timeout_sched = -1; end_session(s); return 0; } @@ -7454,11 +7459,13 @@ static void skinny_session_cleanup(void *data) ast_mutex_unlock(&s->lock); } - if (s->auth_timeout_sched && !ast_sched_del(sched, s->auth_timeout_sched)) { - s->auth_timeout_sched = 0; + if (-1 < s->auth_timeout_sched) { + not_used = ast_sched_del(sched, s->auth_timeout_sched); + s->auth_timeout_sched = -1; } - if (s->keepalive_timeout_sched && !ast_sched_del(sched, s->keepalive_timeout_sched)) { - s->keepalive_timeout_sched = 0; + if (-1 < s->keepalive_timeout_sched) { + not_used = ast_sched_del(sched, s->keepalive_timeout_sched); + s->keepalive_timeout_sched = -1; } if (d) { @@ -7661,6 +7668,8 @@ static void *accept_thread(void *ignore) ast_mutex_init(&s->lock); memcpy(&s->sin, &sin, sizeof(sin)); s->fd = as; + s->auth_timeout_sched = -1; + s->keepalive_timeout_sched = -1; if (ast_pthread_create(&s->t, NULL, skinny_session, s)) { destroy_session(s);