Fix ie ordering in some ie lists for send_message().
git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@1018 2fbb986a-6c06-0410-b554-c9c1f0a7f128
This commit is contained in:
parent
176f0bf6cd
commit
3908bf2e48
25
q931.c
25
q931.c
@ -3262,6 +3262,21 @@ static int q931_xmit(struct pri *ctrl, q931_h *h, int len, int cr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Build and send the requested message.
|
||||
*
|
||||
* \param ctrl D channel controller.
|
||||
* \param call Q.931 call leg
|
||||
* \param msgtype Q.931 message type to build.
|
||||
* \param ies List of ie's to put in the message.
|
||||
*
|
||||
* \note The ie's in the ie list must be in numerical order.
|
||||
* See Q.931 section 4.5.1 coding rules.
|
||||
*
|
||||
* \retval 0 on success.
|
||||
* \retval -1 on error.
|
||||
*/
|
||||
static int send_message(struct pri *ctrl, q931_call *call, int msgtype, int ies[])
|
||||
{
|
||||
unsigned char buf[1024];
|
||||
@ -3449,7 +3464,7 @@ int q931_notify(struct pri *ctrl, q931_call *c, int channel, int info)
|
||||
#ifdef ALERTING_NO_PROGRESS
|
||||
static int call_progress_ies[] = { -1 };
|
||||
#else
|
||||
static int call_progress_with_cause_ies[] = { Q931_PROGRESS_INDICATOR, Q931_CAUSE, -1 };
|
||||
static int call_progress_with_cause_ies[] = { Q931_CAUSE, Q931_PROGRESS_INDICATOR, -1 };
|
||||
|
||||
static int call_progress_ies[] = { Q931_PROGRESS_INDICATOR, -1 };
|
||||
#endif
|
||||
@ -3530,7 +3545,7 @@ int q931_call_proceeding(struct pri *ctrl, q931_call *c, int channel, int info)
|
||||
return send_message(ctrl, c, Q931_CALL_PROCEEDING, call_proceeding_ies);
|
||||
}
|
||||
#ifndef ALERTING_NO_PROGRESS
|
||||
static int alerting_ies[] = { Q931_PROGRESS_INDICATOR, Q931_IE_USER_USER, Q931_IE_FACILITY, -1 };
|
||||
static int alerting_ies[] = { Q931_IE_FACILITY, Q931_PROGRESS_INDICATOR, Q931_IE_USER_USER, -1 };
|
||||
#else
|
||||
static int alerting_ies[] = { Q931_IE_FACILITY, -1 };
|
||||
#endif
|
||||
@ -3563,7 +3578,7 @@ int q931_alerting(struct pri *ctrl, q931_call *c, int channel, int info)
|
||||
return send_message(ctrl, c, Q931_ALERTING, alerting_ies);
|
||||
}
|
||||
|
||||
static int connect_ies[] = { Q931_CHANNEL_IDENT, Q931_PROGRESS_INDICATOR, Q931_IE_CONNECTED_NUM, Q931_IE_FACILITY, -1 };
|
||||
static int setup_ack_ies[] = { Q931_CHANNEL_IDENT, Q931_IE_FACILITY, Q931_PROGRESS_INDICATOR, Q931_IE_CONNECTED_NUM, -1 };
|
||||
|
||||
int q931_setup_ack(struct pri *ctrl, q931_call *c, int channel, int nonisdn)
|
||||
{
|
||||
@ -3583,7 +3598,7 @@ int q931_setup_ack(struct pri *ctrl, q931_call *c, int channel, int nonisdn)
|
||||
UPDATE_OURCALLSTATE(ctrl, c, Q931_CALL_STATE_OVERLAP_RECEIVING);
|
||||
c->peercallstate = Q931_CALL_STATE_OVERLAP_SENDING;
|
||||
c->alive = 1;
|
||||
return send_message(ctrl, c, Q931_SETUP_ACKNOWLEDGE, connect_ies);
|
||||
return send_message(ctrl, c, Q931_SETUP_ACKNOWLEDGE, setup_ack_ies);
|
||||
}
|
||||
|
||||
/* T313 expiry, first time */
|
||||
@ -3645,6 +3660,8 @@ static void pri_disconnect_timeout(void *data)
|
||||
q931_release(ctrl, c, PRI_CAUSE_NORMAL_CLEARING);
|
||||
}
|
||||
|
||||
static int connect_ies[] = { Q931_CHANNEL_IDENT, Q931_IE_FACILITY, Q931_PROGRESS_INDICATOR, Q931_IE_CONNECTED_NUM, -1 };
|
||||
|
||||
int q931_connect(struct pri *ctrl, q931_call *c, int channel, int nonisdn)
|
||||
{
|
||||
if (channel) {
|
||||
|
Loading…
Reference in New Issue
Block a user