Index: chan_h323.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_h323.c,v retrieving revision 1.102 diff -u -5 -r1.102 chan_h323.c --- chan_h323.c 9 Feb 2005 21:15:44 -0000 1.102 +++ chan_h323.c 10 Feb 2005 14:18:30 -0000 @@ -364,11 +364,12 @@ } ast_mutex_unlock(&peerl.lock); } else { ast_mutex_unlock(&peerl.lock); peer = (struct oh323_peer*)malloc(sizeof(struct oh323_peer)); - memset(peer, 0, sizeof(struct oh323_peer)); + if (peer) + memset(peer, 0, sizeof(struct oh323_peer)); } if (peer) { if (!found) { strncpy(peer->name, name, sizeof(peer->name) - 1); peer->addr.sin_port = htons(h323_signalling_port); @@ -466,11 +467,11 @@ struct oh323_pvt *p = (struct oh323_pvt *) c->pvt->pvt; if (p && p->rtp && (p->dtmfmode & H323_DTMF_RFC2833)) { ast_rtp_senddigit(p->rtp, digit); } /* If in-band DTMF is desired, send that */ - if (p->dtmfmode & H323_DTMF_INBAND) { + if (p && (p->dtmfmode & H323_DTMF_INBAND)) { h323_send_tone(p->cd.call_token, digit); } return 0; } @@ -630,13 +631,13 @@ pvt->owner->nativeformats = f->subclass; ast_set_read_format(pvt->owner, pvt->owner->readformat); ast_set_write_format(pvt->owner, pvt->owner->writeformat); } /* Do in-band DTMF detection */ - if (pvt->dtmfmode & H323_DTMF_INBAND) { + if ((pvt->dtmfmode & H323_DTMF_INBAND) && pvt->vad) { f = ast_dsp_process(pvt->owner,pvt->vad,f); - if (f->frametype == AST_FRAME_DTMF) { + if (f &&(f->frametype == AST_FRAME_DTMF)) { ast_log(LOG_DEBUG, "Received in-band digit %c.\n", f->subclass); } } } @@ -855,15 +856,15 @@ ast_mutex_init(&pvt->lock); /* Ensure the call token is allocated */ if ((pvt->cd).call_token == NULL) { (pvt->cd).call_token = (char *)malloc(128); } - memset((char *)(pvt->cd).call_token, 0, 128); if (!pvt->cd.call_token) { ast_log(LOG_ERROR, "Not enough memory to alocate call token\n"); return NULL; } + memset((char *)(pvt->cd).call_token, 0, 128); pvt->cd.call_reference = callid; pvt->bridge = bridging; pvt->dtmfmode = dtmfmode; if (pvt->dtmfmode & H323_DTMF_RFC2833) { pvt->nonCodecCapability |= AST_RTP_DTMF;