[Serusers] Re: [Users] AVPs are lost on relayed INVITE errors
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Wed Nov 30 17:54:04 CET 2005
Hi Frederico,
what should be clear is that the AVPs doesn't belong to the
request/reply or to the user or whatever. They are bound to a transaction!
Since hop by hop ACK s are part of the INVITE transaction, you will see
for ACK the INVITE's AVPS.
one more thing! the transaction AVPs will be visible only one you called
a statefull function.
this explain the behaviour you see.
regards,
bogdan
Federico Giannici wrote:
> The mistery keeps increasing!
>
> I have found that if I set an AVP in an INVITE message, then the same
> AVP is logged in the ACCOUNTING of the corresponding ACK message!
>
> But it is NOT in the ACK message before it enters the transaction
> engine (with a t_relay()). So it is the transaction engine that
> "copies" the INVITE AVPS to the ACK. Or the accounting routines use
> the AVPs from the corresponding INVITE instead of the ACK ones.
>
> Is this the expected behaviour?
> Why this happens?
>
> Thanks.
>
>
>
> Federico Giannici wrote:
>
>> I'm still not able to make these errors reproducible.
>>
>> Now I found that the "AVPs vanishing" occours with 200 OK situations
>> too. It seems to be related to packets retransmission. They occur
>> when the following errors are logged:
>>
>> Nov 28 22:28:30 eowyn OpenSER[3010]: ERROR: t_newtran: transaction
>> already in process 0x502bbc58
>> Nov 28 22:28:30 eowyn OpenSER[3010]: ERROR: sl_reply_error used: I'm
>> terribly sorry, server error occurred (1/SL)
>>
>> These are generated by this classic code:
>>
>> if ( !t_relay() )
>> {
>> sl_reply_error();
>> }
>>
>> Now I'm asking myself: is it correct to reply to a message that is a
>> retrasmission? Shouldn't we simply ignore it? Couldn't it confuse the
>> UAs?
>>
>> Thanks.
>>
>>
>>
>> Federico Giannici wrote:
>>
>>> Bogdan-Andrei Iancu wrote:
>>>
>>>> Hi Federico,
>>>>
>>>> use avp_print() (works only with debug=9) in failure_route to
>>>> inspect the list of present AVP. maybe you do not have the AVPs you
>>>> are trying to log.
>>>
>>>
>>>
>>>
>>> But I set those AVPs in EVERY message received by the server.
>>> Moreover, I'm SURE they are there because before forwarding those
>>> INVITEs with t_relay() I log the messages to syslog and the AVPs ARE
>>> THERE.
>>>
>>> Then, when some kind of errors are received (488, 422, etc.) it
>>> seems that those AVPs are "lost" by the transaction engine...
>>> But I'm not sure what conditions cause this lost.
>>>
>>> Bye.
>>>
>>>
>>>> Federico Giannici wrote:
>>>>
>>>>> Daniel-Constantin Mierla wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> have you set the flag to log missed transaction?
>>>>>> http://openser.org/docs/modules/1.0.x/acc.html#AEN407
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> No, I set the following:
>>>>>
>>>>> modparam("acc", "db_flag", 1)
>>>>> modparam("acc", "failed_transaction_flag", 1)
>>>>>
>>>>> But no "db_missed_flag".
>>>>> Anyway:
>>>>>
>>>>> 1) I don't want to log missed calls in a separate table.
>>>>>
>>>>> 2) The failed INVITEs are actually logged in the normal table, but
>>>>> the AVPs I set are not logged (it seems that they are not found).
>>>>>
>>>>> In normal cases the AVP are correctly logged. Even in many error
>>>>> cases (404, and so on) they are logged too. But in some cases,
>>>>> with strange errors (488, 422), the AVPs are NOT logged
>>>>> (accounting is done, but AVPs are "n\a")!
>>>>>
>>>>> Any explanation of this?
>>>>>
>>>>> Thanks.
>>>>>
>>>>>
>>>>>> Or is that the some avps are not any more stored for failed
>>>>>> transaction? Maybe some snippets of your config will give us more
>>>>>> hints about what happens there.
>>>>>>
>>>>>> Cheers,
>>>>>> Daniel
>>>>>>
>>>>>> On 11/26/05 14:04, Federico Giannici wrote:
>>>>>>
>>>>>>> I'm using OpenSER 1.0.0 on OpenBSD 3.7 amd64.
>>>>>>>
>>>>>>> I have a strange problem with the accounting: I set a couple of
>>>>>>> AVPs for every message that arrives at the server. I'm sure they
>>>>>>> are there because they are written in the syslog logging.
>>>>>>> Sometimes, when an INVITE is relayed (with transactions) and
>>>>>>> receives an error (488, 422, etc.), in the SQL logging there is
>>>>>>> no more presence of the AVPs!
>>>>>>> Is this a known problem?
>>>>>>> How can I avoid this?
>>>>>>>
>>>>>>>
>>>>>>> Thanks.
>>>>>>
>>
>>
>>
>
>
More information about the sr-users
mailing list