diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 1c89674b9c4f6f87979a6dc2cf74fbeb4a61fdc3..9322bf50a8ee8217eef077e8714a6e3e7315b94c 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -5011,6 +5011,11 @@ static void setsubstate(struct skinny_subchannel *sub, int state) pthread_t t; int actualstate = state; + if (!l->device) { + ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name); + return; + } + if (sub->substate == SUBSTATE_ONHOOK) { return; } @@ -5403,15 +5408,20 @@ static void dumpsub(struct skinny_subchannel *sub, int forcehangup) struct skinny_subchannel *activate_sub = NULL; struct skinny_subchannel *tsub; + if (!l->device) { + ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name); + return; + } + if (skinnydebug) { ast_verb(3, "Sub %d - Dumping\n", sub->callid); } - + if (!forcehangup && sub->substate == SUBSTATE_HOLD) { l->activesub = NULL; return; } - + if (sub == l->activesub) { d->hookstate = SKINNY_ONHOOK; transmit_speaker_mode(d, SKINNY_SPEAKEROFF);