From 67f6051009ae41024bd8b057f38f7bfc33d3f3c0 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 31 Jan 2012 18:55:42 +0100 Subject: [PATCH] DHA: Always store TR-* record in state.state, not TC-* --- TCAP/src/ITU/tcap_dha_fsm.erl | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/TCAP/src/ITU/tcap_dha_fsm.erl b/TCAP/src/ITU/tcap_dha_fsm.erl index 4e9bf00..e6ff9b8 100644 --- a/TCAP/src/ITU/tcap_dha_fsm.erl +++ b/TCAP/src/ITU/tcap_dha_fsm.erl @@ -175,7 +175,7 @@ idle({'TR', 'UNI', indication, UniParms}, State) when is_record(UniParms, 'TR-UN origAddress = UniParms#'TR-UNI'.origAddress, dialogueID = DialogueID, componentsPresent = ComponentsPresent}, - NewState = State#state{did = DialogueID, parms = NewTcParms}, + NewState = State#state{did = DialogueID, parms = UniParms}, %% Components to CHA case ComponentsPresent of true -> @@ -201,8 +201,7 @@ idle({'TR', 'BEGIN', indication, BeginParms}, State) when is_record(BeginParms, ABRT = 'DialoguePDUs':encode('ABRT-apdu', #'ABRT-apdu'{'abort-source' = 'dialogue-service-provider'}), %% Discard components %% TR-U-ABORT request to TSL - TrParms = {transactionID = BeginParms#'TR-BEGIN'.transactionID, - userData = #'TR-user-data'{dialoguePortion = dialogue_ext(ABRT)}}, + TrParms = BeginParms#'TR-BEGIN'{userData = #'TR-user-data'{dialoguePortion = dialogue_ext(ABRT)}}, NewState = State#state{otid = BeginParms#'TR-BEGIN'.transactionID, parms = TrParms}, gen_server:cast(NewState#state.tco, {'TR', 'U-ABORT', request, TrParms}), %% Dialogue terminated to CHA @@ -246,7 +245,7 @@ idle({'TR', 'BEGIN', indication, BeginParms}, State) when is_record(BeginParms, dialogueID = DialogueID, componentsPresent = ComponentsPresent}, NewState = State#state{otid = BeginParms#'TR-BEGIN'.transactionID, did = DialogueID, - parms = NewTcParms, appContextMode = TcParms#'TC-BEGIN'.appContextName}, + parms = BeginParms, appContextMode = TcParms#'TC-BEGIN'.appContextName}, %% TC-BEGIN indication to TCU gen_fsm:send_event(NewState#state.usap, {'TC', 'BEGIN', indication, NewTcParms}), %% Any components? @@ -421,7 +420,7 @@ initiation_sent({'TR', 'END', indication, EndParms}, State) when is_record(EndPa TcParms = #'TC-P-ABORT'{qos = EndParms#'TR-END'.qos, dialogueID = State#state.did, pAbort = abnormalDialogue}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = EndParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'P-ABORT', indication, TcParms}), %% Dialogue terminated to CHA gen_server:cast(NewState#state.cco, 'dialogue-terminated'), @@ -435,7 +434,7 @@ initiation_sent({'TR', 'END', indication, EndParms}, State) when is_record(EndPa componentsPresent = ComponentsPresent, userInfo = AARE, termination = EndParms#'TR-END'.termination}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = EndParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'END', indication, TcParms}), %% Any components? case ComponentsPresent of @@ -459,7 +458,7 @@ initiation_sent({'TR', 'NOTICE', indication, NoticeParms}, State) when is_record origAddress = NoticeParms#'TR-NOTICE'.origAddress, destAddress = NoticeParms#'TR-NOTICE'.destAddress, reportCause = NoticeParms#'TR-NOTICE'.reportCause}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = NoticeParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'NOTICE', indication, TcParms}), {next_state, initiation_sent, NewState}; @@ -490,7 +489,7 @@ initiation_sent({'TR', 'CONTINUE', indication, ContParms}, State) when is_record TcParms = #'TC-P-ABORT'{qos = ContParms#'TR-CONTINUE'.qos, dialogueID = State#state.did, pAbort = abnormalDialogue}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = ContParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'P-ABORT', indication, TcParms}), %% Build ABRT apdu ABRT = 'DialoguePDUs':encode('ABRT-apdu', @@ -499,7 +498,7 @@ initiation_sent({'TR', 'CONTINUE', indication, ContParms}, State) when is_record %% TR-U-ABORT request to TSL TrParms = #'TR-U-ABORT'{qos = ContParms#'TC-U-ABORT'.qos, transactionID = NewState#state.otid, userData = UserData}, - LastState = State#state{parms = TrParms}, + LastState = State#state{parms = ContParms}, gen_server:cast(LastState#state.tco, {'TR', 'U-ABORT', request, TrParms}), %% Dialogue terminated to CHA gen_server:cast(LastState#state.cco, 'dialogue-terminated'), @@ -513,7 +512,7 @@ initiation_sent({'TR', 'CONTINUE', indication, ContParms}, State) when is_record dialogueID = State#state.did, userInfo = AARE, componentsPresent = ComponentsPresent}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = ContParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'CONTINUE', indication, TcParms}), %% Any components? case ComponentsPresent of @@ -592,10 +591,10 @@ initiation_sent({'TR', 'U-ABORT', indication, AbortParms}, State) when is_record end end of TcParms when is_record(TcParms, 'TC-U-ABORT') -> - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = AbortParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'U-ABORT', indication, TcParms}); TcParms when is_record(TcParms, 'TC-P-ABORT') -> - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = AbortParms}, gen_fsm:send_event(NewState#state.usap, {'TC', 'P-ABORT', indication, TcParms}) end, %% Dialogue terminated to CHA @@ -609,7 +608,7 @@ initiation_sent({'TR', 'P-ABORT', indication, AbortParms}, State) when is_record TcParms = #'TC-P-ABORT'{qos = AbortParms#'TR-P-ABORT'.qos, dialogueID = State#state.did, pAbort = AbortParms#'TR-P-ABORT'.pAbort}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = AbortParms}, %% TC-P-ABORT indication to TCU gen_fsm:send_event(NewState#state.usap, {'TC', 'P-ABORT', indication, TcParms}), %% Dialogue terminated to CHA @@ -621,7 +620,11 @@ initiation_sent({'TR', 'P-ABORT', indication, AbortParms}, State) when is_record %% reference: Figure A.5/Q.774 (sheet 9 of 11) %% TC-CONTINUE request from TCU active({'TC', 'CONTINUE', request, ContParms}, State) when is_record(ContParms, 'TC-CONTINUE') -> - NewState = State#state{parms = ContParms}, + TrParms = #'TR-CONTINUE'{qos = ContParms#'TC-CONTINUE'.qos, + origAddress = ContParms#'TC-CONTINUE'.origAddress, + transactionID = ContParms#'TC-CONTINUE'.dialogueID, + userData = #'TR-user-data'{dialoguePortion = ContParms#'TC-CONTINUE'.userInfo}}, + NewState = State#state{parms = TrParms}, %% Request component to CHA gen_server:cast(NewState#state.cco, 'request-components'), %% Process components @@ -677,7 +680,7 @@ active({'TR', 'END', indication, EndParms}, State) when is_record(EndParms, 'TR- appContextName = State#state.appContextMode, componentsPresent = ComponentsPresent, termination = EndParms#'TR-END'.termination}, - NewState = State#state{parms = TcParms}, + NewState = State#state{parms = EndParms}, %% Components To CHA gen_fsm:send_event(NewState#state.usap, {'TC', 'END', indication, TcParms}),