I'm trying to understand stateful vs. stateless transactions.
A stateless 'transaction' simply lasts as long as it takes to process
the current sip request. It is then forgotten.
However, a stateful transaction I'm having a little problem grasping.
For instance, if I t_relay() an INVITE, logically the transaction is
started....so when the response comes it isn't delivered to the main
route {} block, but instead it is delivered to the awaiting stateful
t_relay(), probably keyed by callid. So, for instance:
INVITE <-
401 Unauthorized ->
Is this entire sequence a transaction? Right after this the UA sends
an ACK, this is a transaction unto itself?
ACK <-
The UA then sends :
INVITE <-
100 Trying ->
180 Ringing ->
200 OK ->
All of these messages are a 'transaction' handled by t_relay()? The next
transaction is:
ACK <-
Finally, the last transaction would be (as an example):
BYE <-
200 OK ->
So the ser route{} block would need to recognize and handle
INVITE
ACK
BYE
in this context. Is that correct? If I was running 'statelessly'
I would need to handle and send every single message listed?
---greg