diff options
author | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-22 16:29:54 +0000 |
---|---|---|
committer | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-22 16:29:54 +0000 |
commit | c1210321e7aeb274076b14fc2f622edf442246fa (patch) | |
tree | bcbbf4eda53cdb8257bbc7add4616e01e31b1ae2 /channels | |
parent | 2d9ba021dd38039616c82a4e317f652abe246ba3 (diff) |
- revert change to ast_queue_hangup and create ast_queue_hangup_with_cause
- make data member of the ast_frame struct a named union instead of a void
Recently the ast_queue_hangup function got a new parameter, the hangupcause
Feedback came in that this is no good and that instead a new function should be created.
This I did.
The hangupcause was stored in the seqno member of the ast_frame struct. This is not very
elegant, and since there's already a data member that one should be used.
Problem is, this member was a void *.
Now it's a named union so it can hold a pointer, an uint32 and there's a padding in case someone
wants to store another type in there in the future.
This commit is so massive, because all ast_frame.data uses have to be
altered to ast_frame.data.data
Thanks russellb and kpfleming for the feedback.
(closes issue #12674)
Reported by: mvanbaak
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117802 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_alsa.c | 12 | ||||
-rw-r--r-- | channels/chan_console.c | 2 | ||||
-rw-r--r-- | channels/chan_gtalk.c | 4 | ||||
-rw-r--r-- | channels/chan_h323.c | 6 | ||||
-rw-r--r-- | channels/chan_iax2.c | 38 | ||||
-rw-r--r-- | channels/chan_jingle.c | 2 | ||||
-rw-r--r-- | channels/chan_local.c | 8 | ||||
-rw-r--r-- | channels/chan_mgcp.c | 2 | ||||
-rw-r--r-- | channels/chan_misdn.c | 6 | ||||
-rw-r--r-- | channels/chan_oss.c | 12 | ||||
-rw-r--r-- | channels/chan_phone.c | 10 | ||||
-rw-r--r-- | channels/chan_sip.c | 24 | ||||
-rw-r--r-- | channels/chan_skinny.c | 8 | ||||
-rw-r--r-- | channels/chan_unistim.c | 10 | ||||
-rw-r--r-- | channels/chan_zap.c | 24 | ||||
-rw-r--r-- | channels/iax2-parser.c | 6 |
16 files changed, 87 insertions, 87 deletions
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 391c96d16..b4e194b13 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -377,7 +377,7 @@ static int alsa_write(struct ast_channel *chan, struct ast_frame *f) ast_log(LOG_WARNING, "Frame too large\n"); res = -1; } else { - memcpy(sizbuf + sizpos, f->data, f->datalen); + memcpy(sizbuf + sizpos, f->data.ptr, f->datalen); len += f->datalen; pos = 0; state = snd_pcm_state(alsa.ocard); @@ -426,7 +426,7 @@ static struct ast_frame *alsa_read(struct ast_channel *chan) f.subclass = 0; f.samples = 0; f.datalen = 0; - f.data = NULL; + f.data.ptr = NULL; f.offset = 0; f.src = "Console"; f.mallocd = 0; @@ -471,7 +471,7 @@ static struct ast_frame *alsa_read(struct ast_channel *chan) f.subclass = AST_FORMAT_SLINEAR; f.samples = FRAME_SIZE; f.datalen = FRAME_SIZE * 2; - f.data = buf; + f.data.ptr = buf; f.offset = AST_FRIENDLY_OFFSET; f.src = "Console"; f.mallocd = 0; @@ -718,14 +718,14 @@ static char *console_sendtext(struct ast_cli_entry *e, int cmd, struct ast_cli_a } text2send[strlen(text2send) - 1] = '\n'; - f.data = text2send; + f.data.ptr = text2send; f.datalen = strlen(text2send) + 1; grab_owner(); if (alsa.owner) { ast_queue_frame(alsa.owner, &f); f.frametype = AST_FRAME_CONTROL; f.subclass = AST_CONTROL_ANSWER; - f.data = NULL; + f.data.ptr = NULL; f.datalen = 0; ast_queue_frame(alsa.owner, &f); ast_channel_unlock(alsa.owner); @@ -765,7 +765,7 @@ static char *console_hangup(struct ast_cli_entry *e, int cmd, struct ast_cli_arg hookstate = 0; grab_owner(); if (alsa.owner) { - ast_queue_hangup(alsa.owner, AST_CAUSE_NORMAL_CLEARING); + ast_queue_hangup_with_cause(alsa.owner, AST_CAUSE_NORMAL_CLEARING); ast_channel_unlock(alsa.owner); } } diff --git a/channels/chan_console.c b/channels/chan_console.c index 4c8576db5..0fe3cbef4 100644 --- a/channels/chan_console.c +++ b/channels/chan_console.c @@ -874,7 +874,7 @@ static char *cli_console_hangup(struct ast_cli_entry *e, int cmd, struct ast_cli pvt->hookstate = 0; if (pvt->owner) - ast_queue_hangup(pvt->owner, -1); + ast_queue_hangup(pvt->owner); unref_pvt(pvt); diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c index c633fbb7e..4e5e5a36f 100644 --- a/channels/chan_gtalk.c +++ b/channels/chan_gtalk.c @@ -620,7 +620,7 @@ static int gtalk_is_answered(struct gtalk *client, ikspak *pak) ast_getformatname_multiple(s2, BUFSIZ, tmp->peercapability), ast_getformatname_multiple(s3, BUFSIZ, tmp->jointcapability)); /* close session if capabilities don't match */ - ast_queue_hangup(tmp->owner, -1); + ast_queue_hangup(tmp->owner); return -1; @@ -749,7 +749,7 @@ static int gtalk_hangup_farend(struct gtalk *client, ikspak *pak) if (tmp) { tmp->alreadygone = 1; if (tmp->owner) - ast_queue_hangup(tmp->owner, -1); + ast_queue_hangup(tmp->owner); } else ast_log(LOG_NOTICE, "Whoa, didn't find call!\n"); gtalk_response(client, from, pak, NULL, NULL); diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 2583b2d3e..bbe055118 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -342,7 +342,7 @@ static void __oh323_update_info(struct ast_channel *c, struct oh323_pvt *pvt) ast_debug(1, "Process pending hangup for %s\n", c->name); c->_softhangup |= AST_SOFTHANGUP_DEV; c->hangupcause = pvt->hangupcause; - ast_queue_hangup(c, pvt->hangupcause); + ast_queue_hangup_with_cause(c, pvt->hangupcause); pvt->needhangup = 0; pvt->newstate = pvt->newcontrol = pvt->newdigit = pvt->DTMFsched = -1; } @@ -2379,7 +2379,7 @@ static void cleanup_connection(unsigned call_reference, const char *call_token) /* Send hangup */ if (pvt->owner) { pvt->owner->_softhangup |= AST_SOFTHANGUP_DEV; - ast_queue_hangup(pvt->owner, -1); + ast_queue_hangup(pvt->owner); ast_channel_unlock(pvt->owner); } ast_mutex_unlock(&pvt->lock); @@ -2404,7 +2404,7 @@ static void hangup_connection(unsigned int call_reference, const char *token, in if (pvt->owner && !ast_channel_trylock(pvt->owner)) { pvt->owner->_softhangup |= AST_SOFTHANGUP_DEV; pvt->owner->hangupcause = pvt->hangupcause = cause; - ast_queue_hangup(pvt->owner, cause); + ast_queue_hangup_with_cause(pvt->owner, cause); ast_channel_unlock(pvt->owner); } else { diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 24cab65ba..5d4a4e084 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -1783,7 +1783,7 @@ static int iax2_queue_hangup(int callno) usleep(1); ast_mutex_lock(&iaxsl[callno]); } else { - ast_queue_hangup(iaxs[callno]->owner, -1); + ast_queue_hangup(iaxs[callno]->owner); ast_channel_unlock(iaxs[callno]->owner); break; } @@ -2244,7 +2244,7 @@ retry: /* If there's an owner, prod it to give up */ /* It is ok to use ast_queue_hangup() here instead of iax2_queue_hangup() * because we already hold the owner channel lock. */ - ast_queue_hangup(owner, -1); + ast_queue_hangup(owner); } if (pvt->peercallno) { @@ -2312,7 +2312,7 @@ static void __attempt_transmit(const void *data) ast_log(LOG_WARNING, "Max retries exceeded to host %s on %s (type = %d, subclass = %d, ts=%d, seqno=%d)\n", ast_inet_ntoa(iaxs[f->callno]->addr.sin_addr),iaxs[f->callno]->owner->name , f->af.frametype, f->af.subclass, f->ts, f->oseqno); iaxs[callno]->error = ETIMEDOUT; if (iaxs[callno]->owner) { - struct ast_frame fr = { AST_FRAME_CONTROL, AST_CONTROL_HANGUP, .seqno = AST_CAUSE_DESTINATION_OUT_OF_ORDER }; + struct ast_frame fr = { AST_FRAME_CONTROL, AST_CONTROL_HANGUP, .data.uint32 = AST_CAUSE_DESTINATION_OUT_OF_ORDER }; /* Hangup the fd */ iax2_queue_frame(callno, &fr); /* XXX */ /* Remember, owner could disappear */ @@ -3030,7 +3030,7 @@ static int iax2_sendtext(struct ast_channel *c, const char *text) static int iax2_sendimage(struct ast_channel *c, struct ast_frame *img) { - return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_IMAGE, img->subclass, 0, img->data, img->datalen, -1); + return send_command_locked(PTR_TO_CALLNO(c->tech_pvt), AST_FRAME_IMAGE, img->subclass, 0, img->data.ptr, img->datalen, -1); } static int iax2_sendhtml(struct ast_channel *c, int subclass, const char *data, int datalen) @@ -4418,7 +4418,7 @@ static int iax2_trunk_queue(struct chan_iax2_pvt *pvt, struct iax_frame *fr) tpeer->trunkdatalen += sizeof(struct ast_iax2_meta_trunk_entry); } /* Copy actual trunk data */ - memcpy(ptr, f->data, f->datalen); + memcpy(ptr, f->data.ptr, f->datalen); tpeer->trunkdatalen += f->datalen; tpeer->calls++; @@ -4698,7 +4698,7 @@ static int iax2_send(struct chan_iax2_pvt *pvt, struct ast_frame *f, unsigned in else fr->oseqno = pvt->oseqno++; fr->iseqno = pvt->iseqno; - fh = (struct ast_iax2_full_hdr *)(fr->af.data - sizeof(struct ast_iax2_full_hdr)); + fh = (struct ast_iax2_full_hdr *)(fr->af.data.ptr - sizeof(struct ast_iax2_full_hdr)); fh->scallno = htons(fr->callno | IAX_FLAG_FULL); fh->ts = htonl(fr->ts); fh->oseqno = fr->oseqno; @@ -4763,7 +4763,7 @@ static int iax2_send(struct chan_iax2_pvt *pvt, struct ast_frame *f, unsigned in /* Video frame have no sequence number */ fr->oseqno = -1; fr->iseqno = -1; - vh = (struct ast_iax2_video_hdr *)(fr->af.data - sizeof(struct ast_iax2_video_hdr)); + vh = (struct ast_iax2_video_hdr *)(fr->af.data.ptr - sizeof(struct ast_iax2_video_hdr)); vh->zeros = 0; vh->callno = htons(0x8000 | fr->callno); vh->ts = htons((fr->ts & 0x7FFF) | (fr->af.subclass & 0x1 ? 0x8000 : 0)); @@ -4779,7 +4779,7 @@ static int iax2_send(struct chan_iax2_pvt *pvt, struct ast_frame *f, unsigned in fr->oseqno = -1; fr->iseqno = -1; /* Mini frame will do */ - mh = (struct ast_iax2_mini_hdr *)(fr->af.data - sizeof(struct ast_iax2_mini_hdr)); + mh = (struct ast_iax2_mini_hdr *)(fr->af.data.ptr - sizeof(struct ast_iax2_mini_hdr)); mh->callno = htons(fr->callno); mh->ts = htons(fr->ts & 0xFFFF); fr->datalen = fr->af.datalen + sizeof(struct ast_iax2_mini_hdr); @@ -5666,7 +5666,7 @@ static int __send_command(struct chan_iax2_pvt *i, char type, int command, unsig f.subclass = command; f.datalen = datalen; f.src = __FUNCTION__; - f.data = (void *) data; + f.data.ptr = (void *) data; return iax2_send(i, &f, ts, seqno, now, transfer, final, media); } @@ -7810,9 +7810,9 @@ static int socket_process_meta(int packet_len, struct ast_iax2_meta_hdr *meta, s f.datalen = len; if (f.datalen >= 0) { if (f.datalen) - f.data = ptr; + f.data.ptr = ptr; else - f.data = NULL; + f.data.ptr = NULL; if (trunked_ts) fr->ts = (iaxs[fr->callno]->last & 0xFFFF0000L) | (trunked_ts & 0xffff); else @@ -8217,15 +8217,15 @@ static int socket_process(struct iax2_thread *thread) ast_mutex_unlock(&iaxsl[fr->callno]); return 1; } - f.data = NULL; + f.data.ptr = NULL; f.datalen = 0; } else - f.data = thread->buf + sizeof(*fh); + f.data.ptr = thread->buf + sizeof(*fh); } else { if (f.frametype == AST_FRAME_IAX) - f.data = NULL; + f.data.ptr = NULL; else - f.data = empty; + f.data.ptr = empty; memset(&ies, 0, sizeof(ies)); } @@ -9421,9 +9421,9 @@ retryowner2: } f.datalen = res - sizeof(*vh); if (f.datalen) - f.data = thread->buf + sizeof(*vh); + f.data.ptr = thread->buf + sizeof(*vh); else - f.data = NULL; + f.data.ptr = NULL; #ifdef IAXTESTS if (test_resync) { fr->ts = (iaxs[fr->callno]->last & 0xFFFF8000L) | ((ntohs(vh->ts) + test_resync) & 0x7fff); @@ -9448,9 +9448,9 @@ retryowner2: return 1; } if (f.datalen) - f.data = thread->buf + sizeof(*mh); + f.data.ptr = thread->buf + sizeof(*mh); else - f.data = NULL; + f.data.ptr = NULL; #ifdef IAXTESTS if (test_resync) { fr->ts = (iaxs[fr->callno]->last & 0xFFFF0000L) | ((ntohs(mh->ts) + test_resync) & 0xffff); diff --git a/channels/chan_jingle.c b/channels/chan_jingle.c index 290352cec..dea5d502a 100644 --- a/channels/chan_jingle.c +++ b/channels/chan_jingle.c @@ -573,7 +573,7 @@ static int jingle_hangup_farend(struct jingle *client, ikspak *pak) if (tmp) { tmp->alreadygone = 1; if (tmp->owner) - ast_queue_hangup(tmp->owner, -1); + ast_queue_hangup(tmp->owner); } else ast_log(LOG_NOTICE, "Whoa, didn't find call!\n"); jingle_response(client, pak, NULL, NULL); diff --git a/channels/chan_local.c b/channels/chan_local.c index 5ab27041d..5d89cac3b 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -396,7 +396,7 @@ static int local_indicate(struct ast_channel *ast, int condition, const void *da ast_mutex_lock(&p->lock); isoutbound = IS_OUTBOUND(ast, p); f.subclass = condition; - f.data = (void*)data; + f.data.ptr = (void*)data; f.datalen = datalen; if (!(res = local_queue_frame(p, isoutbound, &f, ast, 1))) ast_mutex_unlock(&p->lock); @@ -456,7 +456,7 @@ static int local_sendtext(struct ast_channel *ast, const char *text) ast_mutex_lock(&p->lock); isoutbound = IS_OUTBOUND(ast, p); - f.data = (char *) text; + f.data.ptr = (char *) text; f.datalen = strlen(text) + 1; if (!(res = local_queue_frame(p, isoutbound, &f, ast, 0))) ast_mutex_unlock(&p->lock); @@ -476,7 +476,7 @@ static int local_sendhtml(struct ast_channel *ast, int subclass, const char *dat ast_mutex_lock(&p->lock); isoutbound = IS_OUTBOUND(ast, p); f.subclass = subclass; - f.data = (char *)data; + f.data.ptr = (char *)data; f.datalen = datalen; if (!(res = local_queue_frame(p, isoutbound, &f, ast, 0))) ast_mutex_unlock(&p->lock); @@ -537,7 +537,7 @@ static int local_hangup(struct ast_channel *ast) { struct local_pvt *p = ast->tech_pvt; int isoutbound; - struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_HANGUP, .seqno = ast->hangupcause }; + struct ast_frame f = { AST_FRAME_CONTROL, AST_CONTROL_HANGUP, .data.uint32 = ast->hangupcause }; struct ast_channel *ochan = NULL; int glaredetect = 0, res = 0; diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 592301e8c..021999abd 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -610,7 +610,7 @@ static void mgcp_queue_hangup(struct mgcp_subchannel *sub) for(;;) { if (sub->owner) { if (!ast_channel_trylock(sub->owner)) { - ast_queue_hangup(sub->owner, -1); + ast_queue_hangup(sub->owner); ast_channel_unlock(sub->owner); break; } else { diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index cdbe3b49c..fc36785a3 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -2320,13 +2320,13 @@ static int misdn_answer(struct ast_channel *ast) if (!p) { ast_log(LOG_WARNING, " --> Channel not connected ??\n"); - ast_queue_hangup(ast, AST_CAUSE_NETWORK_OUT_OF_ORDER); + ast_queue_hangup_with_cause(ast, AST_CAUSE_NETWORK_OUT_OF_ORDER); } if (!p->bc) { chan_misdn_log(1, 0, " --> Got Answer, but theres no bc obj ??\n"); - ast_queue_hangup(ast, AST_CAUSE_PROTOCOL_ERROR); + ast_queue_hangup_with_cause(ast, AST_CAUSE_PROTOCOL_ERROR); } tmp = pbx_builtin_getvar_helper(p->ast, "CRYPT_KEY"); @@ -3665,7 +3665,7 @@ static void hangup_chan(struct chan_list *ch) send_cause2ast(ch->ast, ch->bc, ch); if (ch->ast) - ast_queue_hangup(ch->ast, ch->bc->cause); + ast_queue_hangup_with_cause(ch->ast, ch->bc->cause); cb_log(2, port, " --> queue_hangup\n"); } else { cb_log(1, port, "Cannot hangup chan, no ast\n"); diff --git a/channels/chan_oss.c b/channels/chan_oss.c index 6edbbb88c..268ff782f 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -679,13 +679,13 @@ static int oss_write(struct ast_channel *c, struct ast_frame *f) int l = sizeof(o->oss_write_buf) - o->oss_write_dst; if (f->datalen - src >= l) { /* enough to fill a frame */ - memcpy(o->oss_write_buf + o->oss_write_dst, f->data + src, l); + memcpy(o->oss_write_buf + o->oss_write_dst, f->data.ptr + src, l); soundcard_writeframe(o, (short *) o->oss_write_buf); src += l; o->oss_write_dst = 0; } else { /* copy residue */ l = f->datalen - src; - memcpy(o->oss_write_buf + o->oss_write_dst, f->data + src, l); + memcpy(o->oss_write_buf + o->oss_write_dst, f->data.ptr + src, l); src += l; /* but really, we are done */ o->oss_write_dst += l; } @@ -724,10 +724,10 @@ static struct ast_frame *oss_read(struct ast_channel *c) f->subclass = AST_FORMAT_SLINEAR; f->samples = FRAME_SIZE; f->datalen = FRAME_SIZE * 2; - f->data = o->oss_read_buf + AST_FRIENDLY_OFFSET; + f->data.ptr = o->oss_read_buf + AST_FRIENDLY_OFFSET; if (o->boost != BOOST_SCALE) { /* scale and clip values */ int i, x; - int16_t *p = (int16_t *) f->data; + int16_t *p = (int16_t *) f->data.ptr; for (i = 0; i < f->samples; i++) { x = (p[i] * o->boost) / BOOST_SCALE; if (x > 32767) @@ -1012,7 +1012,7 @@ static char *console_sendtext(struct ast_cli_entry *e, int cmd, struct ast_cli_a buf[i] = '\n'; f.frametype = AST_FRAME_TEXT; f.subclass = 0; - f.data = buf; + f.data.ptr = buf; f.datalen = i + 1; ast_queue_frame(o->owner, &f); } @@ -1040,7 +1040,7 @@ static char *console_hangup(struct ast_cli_entry *e, int cmd, struct ast_cli_arg } o->hookstate = 0; if (o->owner) - ast_queue_hangup(o->owner, AST_CAUSE_NORMAL_CLEARING); + ast_queue_hangup_with_cause(o->owner, AST_CAUSE_NORMAL_CLEARING); setformat(o, O_CLOSE); return CLI_SUCCESS; } diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 48b26c160..8ee2cac6a 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -494,7 +494,7 @@ static struct ast_frame *phone_exception(struct ast_channel *ast) /* Some nice norms */ p->fr.datalen = 0; p->fr.samples = 0; - p->fr.data = NULL; + p->fr.data.ptr = NULL; p->fr.src = "Phone"; p->fr.offset = 0; p->fr.mallocd=0; @@ -553,7 +553,7 @@ static struct ast_frame *phone_read(struct ast_channel *ast) /* Some nice norms */ p->fr.datalen = 0; p->fr.samples = 0; - p->fr.data = NULL; + p->fr.data.ptr = NULL; p->fr.src = "Phone"; p->fr.offset = 0; p->fr.mallocd=0; @@ -575,7 +575,7 @@ static struct ast_frame *phone_read(struct ast_channel *ast) ast_log(LOG_WARNING, "Error reading: %s\n", strerror(errno)); return NULL; } - p->fr.data = p->buf; + p->fr.data.ptr = p->buf; if (p->mode != MODE_FXS) switch(p->buf[0] & 0x3) { case '0': @@ -797,7 +797,7 @@ static int phone_write(struct ast_channel *ast, struct ast_frame *frame) } /* If we get here, we have a frame of Appropriate data */ sofar = 0; - pos = frame->data; + pos = frame->data.ptr; while(sofar < frame->datalen) { /* Write in no more than maxfr sized frames */ expected = frame->datalen - sofar; @@ -808,7 +808,7 @@ static int phone_write(struct ast_channel *ast, struct ast_frame *frame) if (frame->datalen == 4) { if (p->silencesupression) { memset(tmpbuf + 4, 0, sizeof(tmpbuf) - 4); - memcpy(tmpbuf, frame->data, 4); + memcpy(tmpbuf, frame->data.ptr, 4); expected = 24; res = phone_write_buf(p, tmpbuf, expected, maxfr, 0); } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 8001e2510..82b25c8ae 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2979,7 +2979,7 @@ static int retrans_pkt(const void *data) if (pkt->owner->owner) { sip_alreadygone(pkt->owner); ast_log(LOG_WARNING, "Hanging up call %s - no reply to our critical packet.\n", pkt->owner->callid); - ast_queue_hangup(pkt->owner->owner, AST_CAUSE_PROTOCOL_ERROR); + ast_queue_hangup_with_cause(pkt->owner->owner, AST_CAUSE_PROTOCOL_ERROR); ast_channel_unlock(pkt->owner->owner); } else { /* If no channel owner, destroy now */ @@ -3121,7 +3121,7 @@ static int __sip_autodestruct(const void *data) if (p->owner) { ast_log(LOG_WARNING, "Autodestruct on dialog '%s' with owner in place (Method: %s)\n", p->callid, sip_methods[p->method].text); - ast_queue_hangup(p->owner, AST_CAUSE_PROTOCOL_ERROR); + ast_queue_hangup_with_cause(p->owner, AST_CAUSE_PROTOCOL_ERROR); } else if (p->refer) { ast_debug(3, "Finally hanging up channel after transfer: %s\n", p->callid); transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, 1); @@ -5832,7 +5832,7 @@ static struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p f = ast_rtp_read(p->trtp); /* RTP Text */ if (sipdebug_text) { int i; - unsigned char* arr = f->data; + unsigned char* arr = f->data.ptr; for (i=0; i < f->datalen; i++) ast_verbose("%c", (arr[i] > ' ' && arr[i] < '}') ? arr[i] : '.'); ast_verbose(" -> "); @@ -12056,7 +12056,7 @@ static void receive_message(struct sip_pvt *p, struct sip_request *req) f.frametype = AST_FRAME_TEXT; f.subclass = 0; f.offset = 0; - f.data = buf; + f.data.ptr = buf; f.datalen = strlen(buf); ast_queue_frame(p->owner, &f); transmit_response(p, "202 Accepted", req); /* We respond 202 accepted, since we relay the message */ @@ -15829,7 +15829,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru */ xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE); if (p->owner && !req->ignore) { - ast_queue_hangup(p->owner, AST_CAUSE_NORMAL_CLEARING); + ast_queue_hangup_with_cause(p->owner, AST_CAUSE_NORMAL_CLEARING); append_history(p, "Hangup", "Got 487 on CANCEL request from us. Queued AST hangup request"); } else if (!req->ignore) { update_call_counter(p, DEC_CALL_LIMIT); @@ -15910,7 +15910,7 @@ static void handle_response_notify(struct sip_pvt *p, int resp, char *rest, stru if (p->owner) { if (!p->refer) { ast_log(LOG_WARNING, "Notify answer on an owned channel? - %s\n", p->owner->name); - ast_queue_hangup(p->owner, AST_CAUSE_NORMAL_UNSPECIFIED); + ast_queue_hangup_with_cause(p->owner, AST_CAUSE_NORMAL_UNSPECIFIED); } else { ast_debug(4, "Got OK on REFER Notify message\n"); } @@ -16470,7 +16470,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ default: /* Send hangup */ if (owner && sipmethod != SIP_MESSAGE && sipmethod != SIP_INFO && sipmethod != SIP_BYE) - ast_queue_hangup(p->owner, AST_CAUSE_PROTOCOL_ERROR); + ast_queue_hangup_with_cause(p->owner, AST_CAUSE_PROTOCOL_ERROR); break; } /* ACK on invite */ @@ -16524,7 +16524,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ ast_debug(1, "Got 200 OK on NOTIFY for transfer\n"); } else ast_log(LOG_WARNING, "Notify answer on an owned channel?\n"); - /* ast_queue_hangup(p->owner, -1); Disabled */ + /* ast_queue_hangup(p->owner); Disabled */ } else { if (!p->subscribed && !p->refer) p->needdestroy = 1; @@ -18374,7 +18374,7 @@ static int handle_request_cancel(struct sip_pvt *p, struct sip_request *req) stop_media_flows(p); /* Immediately stop RTP, VRTP and UDPTL as applicable */ if (p->owner) - ast_queue_hangup(p->owner, -1); + ast_queue_hangup(p->owner); else sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); if (p->initreq.len > 0) { @@ -18533,15 +18533,15 @@ static int handle_request_bye(struct sip_pvt *p, struct sip_request *req) ast_queue_control(c, AST_CONTROL_UNHOLD); ast_async_goto(bridged_to, p->context, p->refer->refer_to, 1); } else - ast_queue_hangup(p->owner, -1); + ast_queue_hangup(p->owner); } } else { ast_log(LOG_WARNING, "Invalid transfer information from '%s'\n", ast_inet_ntoa(p->recv.sin_addr)); if (p->owner) - ast_queue_hangup(p->owner, AST_CAUSE_PROTOCOL_ERROR); + ast_queue_hangup_with_cause(p->owner, AST_CAUSE_PROTOCOL_ERROR); } } else if (p->owner) { - ast_queue_hangup(p->owner, -1); + ast_queue_hangup(p->owner); ast_debug(3, "Received bye, issuing owner hangup\n"); } else { sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 691fae0e8..f9f02c696 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -4554,7 +4554,7 @@ static int handle_onhook_message(struct skinny_req *req, struct skinnysession *s if ((res = attempt_transfer(p)) < 0) { if (sub->next && sub->next->owner) { sub->next->alreadygone = 1; - ast_queue_hangup(sub->next->owner, -1); + ast_queue_hangup(sub->next->owner); } } else if (res) { ast_log(LOG_WARNING, "Transfer attempt failed\n"); @@ -4566,7 +4566,7 @@ static int handle_onhook_message(struct skinny_req *req, struct skinnysession *s /* If there is another active call, skinny_hangup will ring the phone with the other call */ if (sub->owner) { sub->alreadygone = 1; - ast_queue_hangup(sub->owner, -1); + ast_queue_hangup(sub->owner); } else { ast_log(LOG_WARNING, "Skinny(%s@%s-%d) channel already destroyed\n", l->name, d->name, sub->callid); @@ -5263,7 +5263,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if ((res = attempt_transfer(p)) < 0) { if (sub->next && sub->next->owner) { sub->next->alreadygone = 1; - ast_queue_hangup(sub->next->owner, -1); + ast_queue_hangup(sub->next->owner); } } else if (res) { ast_log(LOG_WARNING, "Transfer attempt failed\n"); @@ -5275,7 +5275,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse /* If there is another active call, skinny_hangup will ring the phone with the other call */ if (sub->owner) { sub->alreadygone = 1; - ast_queue_hangup(sub->owner, -1); + ast_queue_hangup(sub->owner); } else { ast_log(LOG_WARNING, "Skinny(%s@%s-%d) channel already destroyed\n", l->name, d->name, sub->callid); diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index 3eda9334a..f806c1077 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -1125,7 +1125,7 @@ static void close_client(struct unistimsession *s) if (sub->owner) { /* Call in progress ? */ if (unistimdebug) ast_verb(0, "Aborting call\n"); - ast_queue_hangup(sub->owner, AST_CAUSE_NETWORK_OUT_OF_ORDER); + ast_queue_hangup_with_cause(sub->owner, AST_CAUSE_NETWORK_OUT_OF_ORDER); } } else ast_log(LOG_WARNING, "Freeing a client with no subchannel !\n"); @@ -1974,11 +1974,11 @@ static void close_call(struct unistimsession *pte) if (attempt_transfer(sub, l->subs[SUB_THREEWAY]) < 0) ast_verb(0, "attempt_transfer failed.\n"); } else - ast_queue_hangup(sub->owner, -1); + ast_queue_hangup(sub->owner); } else { if (l->subs[SUB_THREEWAY]) { if (l->subs[SUB_THREEWAY]->owner) - ast_queue_hangup(l->subs[SUB_THREEWAY]->owner, AST_CAUSE_NORMAL_CLEARING); + ast_queue_hangup_with_cause(l->subs[SUB_THREEWAY]->owner, AST_CAUSE_NORMAL_CLEARING); else ast_log(LOG_WARNING, "threeway sub without owner\n"); } else @@ -2312,7 +2312,7 @@ static void TransferCallStep1(struct unistimsession *pte) if (unistimdebug) ast_verb(0, "Transfer canceled, hangup our threeway channel\n"); if (p->subs[SUB_THREEWAY]->owner) - ast_queue_hangup(p->subs[SUB_THREEWAY]->owner, AST_CAUSE_NORMAL_CLEARING); + ast_queue_hangup_with_cause(p->subs[SUB_THREEWAY]->owner, AST_CAUSE_NORMAL_CLEARING); else ast_log(LOG_WARNING, "Canceling a threeway channel without owner\n"); return; @@ -2368,7 +2368,7 @@ static void HandleCallOutgoing(struct unistimsession *s) /* start switch */ if (ast_pthread_create(&t, NULL, unistim_ss, c)) { display_last_error("Unable to create switch thread"); - ast_queue_hangup(c, AST_CAUSE_SWITCH_CONGESTION); + ast_queue_hangup_with_cause(c, AST_CAUSE_SWITCH_CONGESTION); } } else ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", diff --git a/channels/chan_zap.c b/channels/chan_zap.c index a7c62f5ef..a5ce2b32a 100644 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -4306,7 +4306,7 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast) p->subs[index].f.mallocd = 0; p->subs[index].f.offset = 0; p->subs[index].f.src = "zt_handle_event"; - p->subs[index].f.data = NULL; + p->subs[index].f.data.ptr = NULL; f = &p->subs[index].f; if (index < 0) @@ -4523,7 +4523,7 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast) /* It hasn't been long enough since the last flashook. This is probably a bounce on hanging up. Hangup both channels now */ if (p->subs[SUB_THREEWAY].owner) - ast_queue_hangup(p->subs[SUB_THREEWAY].owner, AST_CAUSE_NO_ANSWER); + ast_queue_hangup_with_cause(p->subs[SUB_THREEWAY].owner, AST_CAUSE_NO_ANSWER); p->subs[SUB_THREEWAY].owner->_softhangup |= AST_SOFTHANGUP_DEV; ast_debug(1, "Looks like a bounced flash, hanging up both calls on %d\n", p->channel); ast_channel_unlock(p->subs[SUB_THREEWAY].owner); @@ -5123,7 +5123,7 @@ static struct ast_frame *__zt_exception(struct ast_channel *ast) p->subs[index].f.subclass = 0; p->subs[index].f.delivery = ast_tv(0,0); p->subs[index].f.src = "zt_exception"; - p->subs[index].f.data = NULL; + p->subs[index].f.data.ptr = NULL; if ((!p->owner) && (!(p->radio || (p->oprmode < 0)))) { @@ -5250,7 +5250,7 @@ static struct ast_frame *zt_read(struct ast_channel *ast) p->subs[index].f.subclass = 0; p->subs[index].f.delivery = ast_tv(0,0); p->subs[index].f.src = "zt_read"; - p->subs[index].f.data = NULL; + p->subs[index].f.data.ptr = NULL; /* make sure it sends initial key state as first frame */ if ((p->radio || (p->oprmode < 0)) && (!p->firstradio)) @@ -5416,9 +5416,9 @@ static struct ast_frame *zt_read(struct ast_channel *ast) p->subs[index].f.frametype = AST_FRAME_TEXT; p->subs[index].f.mallocd = 0; p->subs[index].f.offset = AST_FRIENDLY_OFFSET; - p->subs[index].f.data = p->subs[index].buffer + AST_FRIENDLY_OFFSET; + p->subs[index].f.data.ptr = p->subs[index].buffer + AST_FRIENDLY_OFFSET; p->subs[index].f.datalen = 1; - *((char *) p->subs[index].f.data) = c; + *((char *) p->subs[index].f.data.ptr) = c; ast_mutex_unlock(&p->lock); return &p->subs[index].f; } @@ -5452,7 +5452,7 @@ static struct ast_frame *zt_read(struct ast_channel *ast) p->subs[index].f.samples = READ_SIZE; p->subs[index].f.mallocd = 0; p->subs[index].f.offset = AST_FRIENDLY_OFFSET; - p->subs[index].f.data = p->subs[index].buffer + AST_FRIENDLY_OFFSET / sizeof(p->subs[index].buffer[0]); + p->subs[index].f.data.ptr = p->subs[index].buffer + AST_FRIENDLY_OFFSET / sizeof(p->subs[index].buffer[0]); #if 0 ast_debug(1, "Read %d of voice on %s\n", p->subs[index].f.datalen, ast->name); #endif @@ -5467,7 +5467,7 @@ static struct ast_frame *zt_read(struct ast_channel *ast) p->subs[index].f.samples = 0; p->subs[index].f.mallocd = 0; p->subs[index].f.offset = 0; - p->subs[index].f.data = NULL; + p->subs[index].f.data.ptr = NULL; p->subs[index].f.datalen= 0; } if (p->dsp && (!p->ignoredtmf || p->callwaitcas || p->busydetect || p->callprogress) && !index) { @@ -5592,7 +5592,7 @@ static int zt_write(struct ast_channel *ast, struct ast_frame *frame) return 0; } /* Return if it's not valid data */ - if (!frame->data || !frame->datalen) + if (!frame->data.ptr || !frame->datalen) return 0; if (frame->subclass == AST_FORMAT_SLINEAR) { @@ -5602,7 +5602,7 @@ static int zt_write(struct ast_channel *ast, struct ast_frame *frame) if (res) ast_log(LOG_WARNING, "Unable to set linear mode on channel %d\n", p->channel); } - res = my_zt_write(p, (unsigned char *)frame->data, frame->datalen, index, 1); + res = my_zt_write(p, (unsigned char *)frame->data.ptr, frame->datalen, index, 1); } else { /* x-law already */ if (p->subs[index].linear) { @@ -5611,7 +5611,7 @@ static int zt_write(struct ast_channel *ast, struct ast_frame *frame) if (res) ast_log(LOG_WARNING, "Unable to set companded mode on channel %d\n", p->channel); } - res = my_zt_write(p, (unsigned char *)frame->data, frame->datalen, index, 0); + res = my_zt_write(p, (unsigned char *)frame->data.ptr, frame->datalen, index, 0); } if (res < 0) { ast_log(LOG_WARNING, "write failed: %s\n", strerror(errno)); @@ -10133,7 +10133,7 @@ static int pri_hangup_all(struct zt_pvt *p, struct zt_pri *pri) ast_mutex_lock(&p->lock); } if (p->subs[x].owner) { - ast_queue_hangup(p->subs[x].owner, AST_CAUSE_PRE_EMPTED); + ast_queue_hangup_with_cause(p->subs[x].owner, AST_CAUSE_PRE_EMPTED); ast_channel_unlock(p->subs[x].owner); } } diff --git a/channels/iax2-parser.c b/channels/iax2-parser.c index a86bf7428..bb6e3b2e1 100644 --- a/channels/iax2-parser.c +++ b/channels/iax2-parser.c @@ -966,7 +966,7 @@ void iax_frame_wrap(struct iax_frame *fr, struct ast_frame *f) fr->af.src = f->src; fr->af.delivery.tv_sec = 0; fr->af.delivery.tv_usec = 0; - fr->af.data = fr->afdata; + fr->af.data.ptr = fr->afdata; fr->af.len = f->len; if (fr->af.datalen) { size_t copy_len = fr->af.datalen; @@ -979,10 +979,10 @@ void iax_frame_wrap(struct iax_frame *fr, struct ast_frame *f) /* We need to byte-swap slinear samples from network byte order */ if ((fr->af.frametype == AST_FRAME_VOICE) && (fr->af.subclass == AST_FORMAT_SLINEAR)) { /* 2 bytes / sample for SLINEAR */ - ast_swapcopy_samples(fr->af.data, f->data, copy_len / 2); + ast_swapcopy_samples(fr->af.data.ptr, f->data.ptr, copy_len / 2); } else #endif - memcpy(fr->af.data, f->data, copy_len); + memcpy(fr->af.data.ptr, f->data.ptr, copy_len); } } |