[libpri-commits] rmudgett: branch group/ccss r1434 - in /team/group/ccss: ./ doc/

SVN commits to the libpri project libpri-commits at lists.digium.com
Wed Jan 20 14:02:50 CST 2010


Author: rmudgett
Date: Wed Jan 20 14:02:48 2010
New Revision: 1434

URL: http://svnview.digium.com/svn/libpri?view=rev&rev=1434
Log:
Make PTMP agent be more tollerant of no response to CCBSStatusRequest.

Do not cancel CC if we simply get no responses to a CCBSStatusRequest.  We
will cancel if we do not get any responses for RAW_STATUS_COUNT_MAX times.

Modified:
    team/group/ccss/doc/cc_ptmp_agent.fsm
    team/group/ccss/doc/cc_ptmp_agent_flattened.fsm
    team/group/ccss/pri_cc.c
    team/group/ccss/pri_internal.h

Modified: team/group/ccss/doc/cc_ptmp_agent.fsm
URL: http://svnview.digium.com/svn/libpri/team/group/ccss/doc/cc_ptmp_agent.fsm?view=diff&rev=1434&r1=1433&r2=1434
==============================================================================
--- team/group/ccss/doc/cc_ptmp_agent.fsm (original)
+++ team/group/ccss/doc/cc_ptmp_agent.fsm Wed Jan 20 14:02:48 2010
@@ -87,6 +87,7 @@
 	State CC_STATE_ACTIVATED {
 		Prolog {
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 		}
 		Stimulus CC_EVENT_RECALL {
 			Action Send_Error_Recall(ROSE_ERROR_CCBS_NotReadyForCall);
@@ -128,6 +129,7 @@
 			}
 		}
 		Stimulus CC_EVENT_A_FREE {
+			Action Raw_Status_Count_Reset;
 			Action Set_Raw_A_Status_Free;
 			Action Promote_Raw_A_Status;
 			Action Pass_Up_Status_Rsp_A;
@@ -140,18 +142,25 @@
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Action Promote_Raw_A_Status;
 			Test = Get_A_Status;
+			Test != Invalid {
+				/* Only received User A busy. */
+				Action Raw_Status_Count_Reset;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Next_State CC_STATE_IDLE;
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Next_State CC_STATE_IDLE;
+				}
 			}
 		}
 		Stimulus CC_EVENT_TIMEOUT_EXTENDED_T_CCBS1 {
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 		}
 	}
 	State CC_STATE_B_AVAILABLE {
@@ -193,20 +202,28 @@
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Test = Get_Raw_A_Status;
+			Test != Invalid {
+				/* Only received User A is busy. */
+				Action Raw_Status_Count_Reset;
+				Action Send_CCBSBFree;
+				Action Promote_Raw_A_Status;
+				Action Pass_Up_A_Status;
+				Next_State CC_STATE_SUSPENDED;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Next_State CC_STATE_IDLE;
-			}
-			/* Only received User A is busy. */
-			Action Send_CCBSBFree;
-			Action Promote_Raw_A_Status;
-			Action Pass_Up_A_Status;
-			Next_State CC_STATE_SUSPENDED;
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Next_State CC_STATE_IDLE;
+				}
+				//Action Reset_Raw_A_Status;
+				Action Send_CCBSStatusRequest;
+				Action Start_T_CCBS1;
+			}
 		}
 	}
 	State CC_STATE_SUSPENDED {
@@ -248,16 +265,21 @@
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Test = Get_Raw_A_Status;
+			Test != Invalid {
+				/* Only received User A is busy. */
+				Action Raw_Status_Count_Reset;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Next_State CC_STATE_IDLE;
-			}
-			/* Only received User A is busy. */
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Next_State CC_STATE_IDLE;
+				}
+			}
 			Action Reset_Raw_A_Status;
 			Action Send_CCBSStatusRequest;
 			Action Start_T_CCBS1;

Modified: team/group/ccss/doc/cc_ptmp_agent_flattened.fsm
URL: http://svnview.digium.com/svn/libpri/team/group/ccss/doc/cc_ptmp_agent_flattened.fsm?view=diff&rev=1434&r1=1433&r2=1434
==============================================================================
--- team/group/ccss/doc/cc_ptmp_agent_flattened.fsm (original)
+++ team/group/ccss/doc/cc_ptmp_agent_flattened.fsm Wed Jan 20 14:02:48 2010
@@ -62,6 +62,7 @@
 			/* Start T_CCBS2 or T_CCNR2 depending upon CC mode. */
 			Action Start_T_SUPERVISION;
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 			Next_State CC_STATE_ACTIVATED;
 		}
 		Stimulus CC_EVENT_CANCEL {
@@ -143,6 +144,7 @@
 			}
 		}
 		Stimulus CC_EVENT_A_FREE {
+			Action Raw_Status_Count_Reset;
 			Action Set_Raw_A_Status_Free;
 			Action Promote_Raw_A_Status;
 			Action Pass_Up_Status_Rsp_A;
@@ -155,22 +157,29 @@
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Action Promote_Raw_A_Status;
 			Test = Get_A_Status;
+			Test != Invalid {
+				/* Only received User A busy. */
+				Action Raw_Status_Count_Reset;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Action Stop_T_CCBS1;
-				Action Stop_Extended_T_CCBS1;
-				Action Stop_T_SUPERVISION;
-				Action Set_Selfdestruct;
-				Next_State CC_STATE_IDLE;
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Action Stop_T_CCBS1;
+					Action Stop_Extended_T_CCBS1;
+					Action Stop_T_SUPERVISION;
+					Action Set_Selfdestruct;
+					Next_State CC_STATE_IDLE;
+				}
 			}
 		}
 		Stimulus CC_EVENT_TIMEOUT_EXTENDED_T_CCBS1 {
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_SUPERVISION {
 			Action Pass_Up_CC_Cancel;
@@ -234,32 +243,40 @@
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Test = Get_Raw_A_Status;
+			Test != Invalid {
+				/* Only received User A is busy. */
+				Action Raw_Status_Count_Reset;
+				Action Send_CCBSBFree;
+				Action Promote_Raw_A_Status;
+				Action Pass_Up_A_Status;
+				/* Optimization due to flattening */
+				//Test = Get_T_CCBS1_Status;
+				//Test != Active
+				{
+					Action Reset_Raw_A_Status;
+					Action Send_CCBSStatusRequest;
+					Action Start_T_CCBS1;
+				}
+				Next_State CC_STATE_SUSPENDED;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Action Stop_T_CCBS1;
-				Action Stop_Extended_T_CCBS1;
-				Action Stop_T_SUPERVISION;
-				Action Set_Selfdestruct;
-				Next_State CC_STATE_IDLE;
-			}
-			/* Only received User A is busy. */
-			Action Send_CCBSBFree;
-			Action Promote_Raw_A_Status;
-			Action Pass_Up_A_Status;
-			/* Optimization due to flattening. */
-			//Test = Get_T_CCBS1_Status;
-			//Test != Active
-			{
-				Action Reset_Raw_A_Status;
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Action Stop_T_CCBS1;
+					Action Stop_Extended_T_CCBS1;
+					Action Stop_T_SUPERVISION;
+					Action Set_Selfdestruct;
+					Next_State CC_STATE_IDLE;
+				}
+				//Action Reset_Raw_A_Status;
 				Action Send_CCBSStatusRequest;
 				Action Start_T_CCBS1;
 			}
-			Next_State CC_STATE_SUSPENDED;
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_SUPERVISION {
 			Action Pass_Up_CC_Cancel;
@@ -309,6 +326,7 @@
 			Action Stop_T_CCBS1;
 			Action Stop_Extended_T_CCBS1;
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 			Next_State CC_STATE_ACTIVATED;
 		}
 		Stimulus CC_EVENT_A_BUSY {
@@ -320,20 +338,25 @@
 		}
 		Stimulus CC_EVENT_TIMEOUT_T_CCBS1 {
 			Test = Get_Raw_A_Status;
+			Test != Invalid {
+				/* Only received User A is busy. */
+				Action Raw_Status_Count_Reset;
+			}
 			Test == Invalid {
-				/*
-				 * Did not get any responses.
-				 * User A no longer present.
-				 */
-				Action Send_CCBSErase(Normal_Unspecified);
-				Action Pass_Up_CC_Cancel;
-				Action Stop_T_CCBS1;
-				Action Stop_Extended_T_CCBS1;
-				Action Stop_T_SUPERVISION;
-				Action Set_Selfdestruct;
-				Next_State CC_STATE_IDLE;
-			}
-			/* Only received User A is busy. */
+				/* Did not get any responses. */
+				Action Raw_Status_Count_Increment;
+				Test = Get_Raw_Status_Count;
+				Test >= RAW_STATUS_COUNT_MAX {
+					/* User A no longer present. */
+					Action Send_CCBSErase(Normal_Unspecified);
+					Action Pass_Up_CC_Cancel;
+					Action Stop_T_CCBS1;
+					Action Stop_Extended_T_CCBS1;
+					Action Stop_T_SUPERVISION;
+					Action Set_Selfdestruct;
+					Next_State CC_STATE_IDLE;
+				}
+			}
 			Action Reset_Raw_A_Status;
 			Action Send_CCBSStatusRequest;
 			Action Start_T_CCBS1;
@@ -386,6 +409,7 @@
 			}
 			Action Stop_T_RECALL;
 			Action Reset_A_Status;
+			Action Raw_Status_Count_Reset;
 			Next_State CC_STATE_ACTIVATED;
 		}
 		Stimulus CC_EVENT_RECALL {

Modified: team/group/ccss/pri_cc.c
URL: http://svnview.digium.com/svn/libpri/team/group/ccss/pri_cc.c?view=diff&rev=1434&r1=1433&r2=1434
==============================================================================
--- team/group/ccss/pri_cc.c (original)
+++ team/group/ccss/pri_cc.c Wed Jan 20 14:02:48 2010
@@ -43,6 +43,8 @@
 //#define CC_SANITY_CHECKS	1
 #define CC_SANITY_CHECKS	1// BUGBUG
 
+/*! Maximum times CCBSStatusRequest can have no response before canceling CC. */
+#define RAW_STATUS_COUNT_MAX	3
 
 /* ------------------------------------------------------------------- */
 
@@ -3597,6 +3599,36 @@
 
 /*!
  * \internal
+ * \brief FSM action to reset the raw A status request no response count.
+ *
+ * \param ctrl D channel controller.
+ * \param cc_record Call completion record to process event.
+ *
+ * \return Nothing
+ */
+static void pri_cc_act_raw_status_count_reset(struct pri *ctrl, struct pri_cc_record *cc_record)
+{
+	PRI_CC_ACT_DEBUG_OUTPUT(ctrl, cc_record->record_id);
+	cc_record->fsm.ptmp.party_a_status_count = 0;
+}
+
+/*!
+ * \internal
+ * \brief FSM action to increment the raw A status request no response count.
+ *
+ * \param ctrl D channel controller.
+ * \param cc_record Call completion record to process event.
+ *
+ * \return Nothing
+ */
+static void pri_cc_act_raw_status_count_increment(struct pri *ctrl, struct pri_cc_record *cc_record)
+{
+	PRI_CC_ACT_DEBUG_OUTPUT(ctrl, cc_record->record_id);
+	++cc_record->fsm.ptmp.party_a_status_count;
+}
+
+/*!
+ * \internal
  * \brief FSM action to reset raw A status.
  *
  * \param ctrl D channel controller.
@@ -4367,6 +4399,7 @@
 		pri_cc_act_release_link_id(ctrl, cc_record);
 		pri_cc_act_start_t_supervision(ctrl, cc_record);
 		pri_cc_act_reset_a_status(ctrl, cc_record);
+		pri_cc_act_raw_status_count_reset(ctrl, cc_record);
 		cc_record->state = CC_STATE_ACTIVATED;
 		break;
 	case CC_EVENT_CANCEL:
@@ -4446,6 +4479,7 @@
 		}
 		break;
 	case CC_EVENT_A_FREE:
+		pri_cc_act_raw_status_count_reset(ctrl, cc_record);
 		pri_cc_act_set_raw_a_status_free(ctrl, cc_record);
 		pri_cc_act_promote_raw_a_status(ctrl, cc_record);
 		pri_cc_act_pass_up_a_status(ctrl, cc_record);
@@ -4457,22 +4491,27 @@
 		break;
 	case CC_EVENT_TIMEOUT_T_CCBS1:
 		pri_cc_act_promote_raw_a_status(ctrl, cc_record);
-		if (cc_record->party_a_status == CC_PARTY_A_AVAILABILITY_INVALID) {
-			/*
-			 * Did not get any responses.
-			 * User A no longer present.
-			 */
-			pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
-			pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
-			pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_t_supervision(ctrl, cc_record);
-			pri_cc_act_set_self_destruct(ctrl, cc_record);
-			cc_record->state = CC_STATE_IDLE;
+		if (cc_record->party_a_status != CC_PARTY_A_AVAILABILITY_INVALID) {
+			/* Only received User A busy. */
+			pri_cc_act_raw_status_count_reset(ctrl, cc_record);
+		} else {
+			/* Did not get any responses. */
+			pri_cc_act_raw_status_count_increment(ctrl, cc_record);
+			if (cc_record->fsm.ptmp.party_a_status_count >= RAW_STATUS_COUNT_MAX) {
+				/* User A no longer present. */
+				pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
+				pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
+				pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_t_supervision(ctrl, cc_record);
+				pri_cc_act_set_self_destruct(ctrl, cc_record);
+				cc_record->state = CC_STATE_IDLE;
+			}
 		}
 		break;
 	case CC_EVENT_TIMEOUT_EXTENDED_T_CCBS1:
 		pri_cc_act_reset_a_status(ctrl, cc_record);
+		pri_cc_act_raw_status_count_reset(ctrl, cc_record);
 		break;
 	case CC_EVENT_TIMEOUT_T_SUPERVISION:
 		pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
@@ -4548,32 +4587,38 @@
 		}
 		break;
 	case CC_EVENT_TIMEOUT_T_CCBS1:
-		if (cc_record->fsm.ptmp.party_a_status_acc == CC_PARTY_A_AVAILABILITY_INVALID) {
-			/*
-			 * Did not get any responses.
-			 * User A no longer present.
-			 */
-			pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
-			pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
-			pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_t_supervision(ctrl, cc_record);
-			pri_cc_act_set_self_destruct(ctrl, cc_record);
-			cc_record->state = CC_STATE_IDLE;
-			break;
-		}
-		/* Only received User A busy. */
-		pri_cc_act_send_ccbs_b_free(ctrl, cc_record);
-		pri_cc_act_promote_raw_a_status(ctrl, cc_record);
-		pri_cc_act_pass_up_a_status(ctrl, cc_record);
-		/* Optimization due to flattening. */
-		//if (!pri_cc_get_t_ccbs1_status(cc_record))
-		{
-			pri_cc_act_reset_raw_a_status(ctrl, cc_record);
+		if (cc_record->fsm.ptmp.party_a_status_acc != CC_PARTY_A_AVAILABILITY_INVALID) {
+			/* Only received User A busy. */
+			pri_cc_act_raw_status_count_reset(ctrl, cc_record);
+			pri_cc_act_send_ccbs_b_free(ctrl, cc_record);
+			pri_cc_act_promote_raw_a_status(ctrl, cc_record);
+			pri_cc_act_pass_up_a_status(ctrl, cc_record);
+			/* Optimization due to flattening. */
+			//if (!pri_cc_get_t_ccbs1_status(cc_record))
+			{
+				pri_cc_act_reset_raw_a_status(ctrl, cc_record);
+				pri_cc_act_send_ccbs_status_request(ctrl, cc_record);
+				//pri_cc_act_start_t_ccbs1(ctrl, cc_record);
+			}
+			cc_record->state = CC_STATE_SUSPENDED;
+		} else {
+			/* Did not get any responses. */
+			pri_cc_act_raw_status_count_increment(ctrl, cc_record);
+			if (cc_record->fsm.ptmp.party_a_status_count >= RAW_STATUS_COUNT_MAX) {
+				/* User A no longer present. */
+				pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
+				pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
+				pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_t_supervision(ctrl, cc_record);
+				pri_cc_act_set_self_destruct(ctrl, cc_record);
+				cc_record->state = CC_STATE_IDLE;
+				break;
+			}
+			//pri_cc_act_reset_raw_a_status(ctrl, cc_record);
 			pri_cc_act_send_ccbs_status_request(ctrl, cc_record);
 			//pri_cc_act_start_t_ccbs1(ctrl, cc_record);
 		}
-		cc_record->state = CC_STATE_SUSPENDED;
 		break;
 	case CC_EVENT_TIMEOUT_T_SUPERVISION:
 		pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
@@ -4639,6 +4684,7 @@
 		pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
 		pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
 		pri_cc_act_reset_a_status(ctrl, cc_record);
+		pri_cc_act_raw_status_count_reset(ctrl, cc_record);
 		cc_record->state = CC_STATE_ACTIVATED;
 		break;
 	case CC_EVENT_A_BUSY:
@@ -4648,21 +4694,24 @@
 		}
 		break;
 	case CC_EVENT_TIMEOUT_T_CCBS1:
-		if (cc_record->fsm.ptmp.party_a_status_acc == CC_PARTY_A_AVAILABILITY_INVALID) {
-			/*
-			 * Did not get any responses.
-			 * User A no longer present.
-			 */
-			pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
-			pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
-			pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
-			pri_cc_act_stop_t_supervision(ctrl, cc_record);
-			pri_cc_act_set_self_destruct(ctrl, cc_record);
-			cc_record->state = CC_STATE_IDLE;
-			break;
+		if (cc_record->fsm.ptmp.party_a_status_acc != CC_PARTY_A_AVAILABILITY_INVALID) {
+			/* Only received User A busy. */
+			pri_cc_act_raw_status_count_reset(ctrl, cc_record);
+		} else {
+			/* Did not get any responses. */
+			pri_cc_act_raw_status_count_increment(ctrl, cc_record);
+			if (cc_record->fsm.ptmp.party_a_status_count >= RAW_STATUS_COUNT_MAX) {
+				/* User A no longer present. */
+				pri_cc_act_send_ccbs_erase(ctrl, cc_record, 0 /* normal-unspecified */);
+				pri_cc_act_pass_up_cc_cancel(ctrl, cc_record);
+				pri_cc_act_stop_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_extended_t_ccbs1(ctrl, cc_record);
+				pri_cc_act_stop_t_supervision(ctrl, cc_record);
+				pri_cc_act_set_self_destruct(ctrl, cc_record);
+				cc_record->state = CC_STATE_IDLE;
+				break;
+			}
 		}
-		/* Only received User A busy. */
 		pri_cc_act_reset_raw_a_status(ctrl, cc_record);
 		pri_cc_act_send_ccbs_status_request(ctrl, cc_record);
 		//pri_cc_act_start_t_ccbs1(ctrl, cc_record);
@@ -4731,6 +4780,7 @@
 		}
 		pri_cc_act_stop_t_recall(ctrl, cc_record);
 		pri_cc_act_reset_a_status(ctrl, cc_record);
+		pri_cc_act_raw_status_count_reset(ctrl, cc_record);
 		cc_record->state = CC_STATE_ACTIVATED;
 		break;
 	case CC_EVENT_RECALL:

Modified: team/group/ccss/pri_internal.h
URL: http://svnview.digium.com/svn/libpri/team/group/ccss/pri_internal.h?view=diff&rev=1434&r1=1433&r2=1434
==============================================================================
--- team/group/ccss/pri_internal.h (original)
+++ team/group/ccss/pri_internal.h Wed Jan 20 14:02:48 2010
@@ -774,6 +774,8 @@
 			int extended_t_ccbs1;
 			/*! Invoke id for the CCBSStatusRequest message to find if T_CCBS1 still running. */
 			int t_ccbs1_invoke_id;
+			/*! Number of times party A status request got no responses. */
+			int party_a_status_count;
 			/*! Accumulating party A availability status */
 			enum CC_PARTY_A_AVAILABILITY party_a_status_acc;
 		} ptmp;




More information about the libpri-commits mailing list