Harald Welte
4ee5c4b208
ISM: correctly handle TC-U-ERROR component in class1/class2 op
2013-06-25 16:14:01 +02:00
Harald Welte
3a58450d11
TCAP ISM: trap the EXIT signal to avoid getting killed too early
...
When we receive a TC-END with RESULT-L, the process hierarchy might
kill us before we received the RESSULT-L, or aftger we received it,
but before we had a chance to deliver it to the TC User.
Trapping the EXIT flag solves the problem. It also means that the EXIT
signal will not propagate to other linked processes. However, there
should be no other processes, as ISM is not starting any.
2013-06-24 17:17:41 +02:00
Harald Welte
cb55abc0f7
TCAP CCO: Handle case where ReturnResult.result is asn1_NOVALUE
2013-06-24 14:40:19 +02:00
Harald Welte
8d32188896
The ReturnResult.result SEQUENCE is actually optional, not mandatory
2013-06-24 14:34:07 +02:00
Harald Welte
2e85c582e7
TCAP TSM: remove old debug print
2013-06-24 12:22:27 +02:00
Harald Welte
ee5a1d7f5e
TCAP ISM: Send primitives with correct prefix/tuple
2013-06-24 12:15:44 +02:00
Harald Welte
82d7f610ee
TCAP ISM: Don't generate ERROR REPORT on stop due to timer expiry
...
If we don't state 'normal' as 'stop' reason, gen_fsm will generate an
ERROR_REPORT, which is not what we want here.
2013-06-24 09:41:15 +02:00
Harald Welte
ad354b3136
tcap_user: wrap gen_server call to allocate new dialogue ID
2013-06-24 09:41:13 +02:00
Harald Welte
63a908e220
TCAP CCO: implement indication of 'lastComponent' to TC-USER
...
The TC-User can now look at the 'lastComponent' member of the
component in order to determine if this is the last component
within the current message, or if there will be more components.
2013-06-24 09:41:10 +02:00
Harald Welte
d7932419d9
TCAP DHA: Store user-provided dialogueID as otid in state
2013-06-24 09:41:07 +02:00
Harald Welte
7a05586c5d
add empty ebin/{ansi,itu} directories
2013-06-18 12:36:20 +02:00
Harald Welte
f8b955678f
edoc doesn't support multiple authors in one @author tag
2013-06-18 12:34:16 +02:00
Harald Welte
7c65bc9ef1
Update TCAPMessages.asn to work with osmo_cap
...
asn1ct will fail with a 'cant check' error of this change is not made.
2013-06-18 12:21:59 +02:00
Harald Welte
0f844098b2
Makefile: remove deprecated +driver option
2013-06-10 13:39:14 +02:00
Harald Welte
efbaae2b38
Makefile: Build asn1 generated modules with debug info
2013-06-10 13:37:57 +02:00
Harald Welte
38c579aca9
DHA: properly implement differences of ACTIVE and INIT SENT state
...
When we are in initiation_sent state, the logic regarding the neccessity
and treatment of the dialogueInfo is different than active state.
However, it is reasonably similar so that we can use the same function
'is_or_active()' to implement the handling of TR-{CONTINUE,END}.ind
in one function, respectively rather than copy+paste code.
2013-06-10 13:36:06 +02:00
Harald Welte
4eef43beee
DHA: Ensure TR-END always contains a valid TR-userData record
...
otherwise the ASN1 encoder will raise an exception
2013-06-10 12:27:28 +02:00
Harald Welte
722715ae9e
TSM: Don't attempt to create an END message with no dest trans id
2013-06-10 12:26:46 +02:00
Harald Welte
1760c1538d
TC.asn: Mark "argument" part of Invoke as 'OPTIONAL'
...
Even thought th TCAP spec seems to indicate it is not optional, in fact
it apparently is :/
2013-06-10 12:26:05 +02:00
Harald Welte
a7c2afc83e
DHA: Store TR-END record in loop state on TC-END request
...
We need to put the TR-END record in the loop data state once we receive
the TC-END.req from TCU, even in 'basic' termination mode. Only this
way, code in the wait_for_end_components can actually access/use that
record.
2013-06-10 09:39:13 +02:00
Harald Welte
d5260e0a5d
TSM: print reason for termination in debug logging
2013-06-10 09:38:48 +02:00
Harald Welte
0637b91934
CCO: TCAP 'Invoke' parameters are not OPTIONAL
...
... so we cannot feed asn1_NOVALUE into the encoder, but have to
pass an empty list instead. sigh.
2013-06-10 09:00:51 +02:00
Harald Welte
f319881540
tcap_invocation_sup: Use unique name for each ISM
...
This bug prevented multiple INVOKE to exist in parallel.
2013-06-10 08:49:43 +02:00
Harald Welte
babe0e92cd
DHA: After sending TR-CONTINUE from initiation-received state we go to active
2013-06-09 23:13:56 +02:00
Harald Welte
f0d0e908d1
DHA: don't forget to 'request-components' in TC-CONTINUE
...
when TCU requests a TC-CONTINUE, DHA has to request pending
components from CCO.
2013-06-09 23:01:40 +02:00
Harald Welte
1e7edddd7f
Always include AARE DialoguePDU if sending first END/CONTINUE
...
According to the spec regarding dialogue handling, the first
CONTINUE or END in response to a BEGIN must always contain a
dialogue portion with an AARE PDU, acknowledging protocol version and
application context name.
2013-06-09 22:13:41 +02:00
Harald Welte
0a00ca8a20
DHA: make extract_dialogue_portion() safe for asn1_NOVALUE
2013-06-09 16:19:58 +02:00
Harald Welte
0afe128c20
DHA: fix missing '' around atom with '-' in its name
...
... otherwise it would be treated like an arithmetic expression
2013-06-09 16:19:57 +02:00
Harald Welte
cc3bbf9876
DHA: Always send dialogue portion in 'initiation_received'
...
Whether or not the local TC-User specifies a userPortion doesn't matter,
we always need to respond with a dialoguePortion confirming protocol
version and AC name to the originator.
2013-06-09 16:15:44 +02:00
Harald Welte
0d786b3171
TSM: outgoing END needs DTID and CallingParty
...
We need to store the SCCP CalledAddress in the TSM state at the time we
receive the BEGIN of this dialogue.
2013-06-08 10:37:49 +02:00
Harald Welte
0c1ac01cf6
DHA: AARE protocol-version is always an array of versions!
2013-06-08 10:11:22 +02:00
Harald Welte
ce41e7f2a9
TCO needs to know the PID of the user to deliver incoming BEGIN
...
If TCO detects an incoming BEGIN, it starts tcap_transaction_sup
which in turn start dha_fsm and ism_fsm, who both need to know
to whom to send the new components
We nw send those to the Pid that was set by the user using
gen_server:call(TCOpid, set_usap). This is most likely not the right
approach, as most apps will probably want to create a new process for
each dialogue. Needs improvement later.
2013-06-08 09:04:02 +02:00
Harald Welte
db99b66859
TCO: fix generation of incoming tcap_transaction_sup tree
...
This moves the 'server' side of the TCAP code to generate a proper
tcap_transaction_sup sub-tree on an incoming BEGIN
2013-06-08 09:02:50 +02:00
Harald Welte
f1803eabfb
DHA: fix parsing of BEGIN dialogue portion on incoming msgs
2013-06-08 01:14:21 +02:00
Harald Welte
3bf400d91a
TSM: we already receive decoded asn.1, don't try to feed that to decoder again
2013-06-08 00:55:01 +02:00
Harald Welte
47c1432648
CCO: use osmo_util:asn1_val() rather than local copy
2013-06-08 00:35:00 +02:00
Harald Welte
d98371a2f4
TCAP TCO Server: Use 'TR' module to encode Abort
2013-06-07 23:15:42 +02:00
Harald Welte
b85bdc8e2a
tcap_user: Export get_dialg_id/1
2012-02-10 12:18:45 +01:00
Harald Welte
cb24a47d2d
ISM: remove one FIXME (forwarding TC-U-REJECT to usap)
2012-02-08 22:05:15 +01:00
Harald Welte
36561032eb
components_sup: More verbosity when starting
2012-02-02 23:47:29 +01:00
Harald Welte
d0b28f51c3
ISM: use gen_fsm:send_event(usap), not gen_server:cast(usap)
2012-02-01 21:58:13 +01:00
Harald Welte
148d299b28
tcap_user: resolve CCO/DHA for all TC- primitives
2012-01-31 22:10:53 +01:00
Harald Welte
77d0ee7b13
CCO: properly convert InvokeID of received components
2012-01-31 21:28:24 +01:00
Harald Welte
e7540c5c33
DHA: make sure that the 'ok' of ASN.1 decoder doesn't end up in components list
2012-01-31 21:06:34 +01:00
Harald Welte
12f95d3935
TSM: use default QoS values if not provided in TR-* prim
...
According to Q.771, it is a User option if QoS paramters are passed
down. We simply use default paramters if none have been provided.
2012-01-31 20:54:24 +01:00
Harald Welte
250b36f2d8
TCO: make sure transaciton IDs are always converted from binary to int
2012-01-31 20:43:17 +01:00
Harald Welte
67f6051009
DHA: Always store TR-* record in state.state, not TC-*
2012-01-31 18:55:42 +01:00
Harald Welte
ae3aa8c3f2
DHA: Use incoming DialogueID from user as Transaction ID in TR sub-layer
...
Theoretically, Dialogue IDs and Transaction IDs are two independent
namesepaces. However, since TC is the only user of TR, we can simply
establish a 1:1 mapping.
2012-01-31 18:36:06 +01:00
Harald Welte
f5005c00e0
CCO: Use empty list [] instead of indefined for empty state.components
2012-01-31 18:35:27 +01:00
Harald Welte
d8c6cf5e18
CCO: remove dead code
2012-01-31 18:09:47 +01:00