ast_group_t callgroup;
ast_group_t pickupgroup;
int callwaiting;
+ int hascallwaiting;
int transfer;
int threewaycalling;
int singlepath;
if ((p->hookstate == MGCP_ONHOOK) && (!sub->next->rtp)) {
p->hidecallerid = 0;
+ if (p->hascallwaiting && !p->callwaiting) {
+ if (option_verbose > 2)
+ ast_verbose(VERBOSE_PREFIX_3 "Enabling call waiting on %s\n", ast->name);
+ p->callwaiting = -1;
+ }
if (has_voicemail(p)) {
if (mgcpdebug) {
ast_verbose(VERBOSE_PREFIX_3 "MGCP mgcp_hangup(%s) on %s@%s set vmwi(+)\n",
/*zt_wait_event(p->subs[index].zfd);*/
ast_hangup(chan);
return NULL;
- } else if (p->callwaiting && !strcmp(exten, "*70")) {
+ } else if (p->hascallwaiting && p->callwaiting && !strcmp(exten, "*70")) {
if (option_verbose > 2) {
ast_verbose(VERBOSE_PREFIX_3 "Disabling call waiting on %s\n", chan->name);
}
}
}
if ((p->hookstate == MGCP_ONHOOK) && (!sub->rtp) && (!sub->next->rtp)) {
+ p->hidecallerid = 0;
+ if (p->hascallwaiting && !p->callwaiting) {
+ if (option_verbose > 2)
+ ast_verbose(VERBOSE_PREFIX_3 "Enabling call waiting on MGCP/%s@%s-%d\n", p->name, p->parent->name, sub->id);
+ p->callwaiting = -1;
+ }
if (has_voicemail(p)) {
if (option_verbose > 2) {
ast_verbose(VERBOSE_PREFIX_3 "MGCP handle_request(%s@%s) set vmwi(+)\n", p->name, p->parent->name);
e->singlepath = singlepath;
e->canreinvite = canreinvite;
e->callwaiting = callwaiting;
+ e->hascallwaiting = callwaiting;
e->slowsequence = slowsequence;
e->transfer = transfer;
e->threewaycalling = threewaycalling;
e->canreinvite = canreinvite;
e->singlepath = singlepath;
e->callwaiting = callwaiting;
+ e->hascallwaiting = callwaiting;
e->slowsequence = slowsequence;
e->transfer = transfer;
e->threewaycalling = threewaycalling;