[svn-commits] rmudgett: branch rmudgett/facility r1083 - /team/rmudgett/facility/q931.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Sep 15 17:14:26 CDT 2009


Author: rmudgett
Date: Tue Sep 15 17:14:23 2009
New Revision: 1083

URL: http://svn.asterisk.org/svn-view/libpri?view=rev&rev=1083
Log:
A couple more places needing subcmds.

Modified:
    team/rmudgett/facility/q931.c

Modified: team/rmudgett/facility/q931.c
URL: http://svn.asterisk.org/svn-view/libpri/team/rmudgett/facility/q931.c?view=diff&rev=1083&r1=1082&r2=1083
==============================================================================
--- team/rmudgett/facility/q931.c (original)
+++ team/rmudgett/facility/q931.c Tue Sep 15 17:14:23 2009
@@ -655,6 +655,20 @@
 	}
 
 	return number_value | number_screening;
+}
+
+static void q931_clr_subcommands(struct pri *ctrl)
+{
+	ctrl->subcmds.counter_subcmd = 0;
+}
+
+struct pri_subcommand *q931_alloc_subcommand(struct pri *ctrl)
+{
+	if (ctrl->subcmds.counter_subcmd < PRI_MAX_SUBCOMMANDS) {
+		return &ctrl->subcmds.subcmd[ctrl->subcmds.counter_subcmd++];
+	}
+
+	return NULL;
 }
 
 static char *code2str(int code, struct msgtype *codes, int max)
@@ -3795,6 +3809,7 @@
 	c->t308_timedout++;
 	c->ourcallstate = Q931_CALL_STATE_NULL;
 	c->peercallstate = Q931_CALL_STATE_NULL;
+	q931_clr_subcommands(ctrl);
 	ctrl->schedev = 1;
 	ctrl->ev.e = PRI_EVENT_HANGUP_ACK;
 	ctrl->ev.hangup.subcmds = &ctrl->subcmds;
@@ -4087,11 +4102,13 @@
 
 	UPDATE_HOLD_STATE(ctrl, call, Q931_HOLD_STATE_IDLE);
 
+	q931_clr_subcommands(ctrl);
 	ctrl->schedev = 1;
 	ctrl->ev.e = PRI_EVENT_HOLD_REJ;
 	ctrl->ev.hold_rej.channel = q931_encode_channel(call);
 	ctrl->ev.hold_rej.call = call;
 	ctrl->ev.hold_rej.cause = PRI_CAUSE_MESSAGE_TYPE_NONEXIST;
+	ctrl->ev.hold_rej.subcmds = &ctrl->subcmds;
 }
 
 /*!
@@ -4279,11 +4296,13 @@
 	call->ds1explicit = 0;
 	call->chanflags = 0;
 
+	q931_clr_subcommands(ctrl);
 	ctrl->schedev = 1;
 	ctrl->ev.e = PRI_EVENT_RETRIEVE_REJ;
 	ctrl->ev.retrieve_rej.channel = q931_encode_channel(call);
 	ctrl->ev.retrieve_rej.call = call;
 	ctrl->ev.retrieve_rej.cause = PRI_CAUSE_MESSAGE_TYPE_NONEXIST;
+	ctrl->ev.retrieve_rej.subcmds = &ctrl->subcmds;
 }
 
 /*!
@@ -4573,20 +4592,6 @@
 	}
 	/* we did handle hangup properly at this point */
 	return 0;
-}
-
-static void q931_clr_subcommands(struct pri *ctrl)
-{
-	ctrl->subcmds.counter_subcmd = 0;
-}
-
-struct pri_subcommand *q931_alloc_subcommand(struct pri *ctrl)
-{
-	if (ctrl->subcmds.counter_subcmd < PRI_MAX_SUBCOMMANDS) {
-		return &ctrl->subcmds.subcmd[ctrl->subcmds.counter_subcmd++];
-	}
-
-	return NULL;
 }
 
 static int prepare_to_handle_maintenance_message(struct pri *ctrl, q931_mh *mh, q931_call *c)




More information about the svn-commits mailing list