[Devel] Last changes before CVS freez
bogdan at voice-system.ro
Thu May 25 10:59:08 CEST 2006
Juha Heinanen wrote:
>Bogdan-Andrei Iancu writes:
> > >based on reading the code it is obvious to me that two reports are
> > >generated: one triggered by TMCB_ON_FAILURE and the other by
> > >TMCB_RESPONSE_OUT, but perhaps i don't understand the code correctly.
> > >
> > >
> > even if on_missed is called from both TMCB_ON_FAILURE and
> > TMCB_RESPONSE_OUT, only once will be processed - after first call the
> > on_missed flag will be reset and the second call will not generate any
> > new record.
>sure, calling on_missed two times does not generate two records. one
>record is generated by on_missed call triggered either by
>TMCB_ON_FAILURE callback and the other is generated by acc_rad_reply call
>in acc_onreply (which in turn is triggered by TMCB_RESPONSE_OUT
>both acc_rad_missed and acc_rad_reply call acc_rad_request that actually
>sends the report. acc_rad_request in turn calls rad_status to figure out
>the service type (STATUS_START or STATUS_FAILURE). so in case of 408,
>service type of the report will in both acc_rad_missed and acc_rad_reply
>call be STATUS_FAILED.
>or am i missing something?
that's right - acc_rad_missed() will generate one record and a second
one will be by acc_rad_reply(). But as in your scenario it's about a
transaction with a negative response (408), the acc_rad_reply() should
generate the record *only* if the failed_transaction_flag is set.
I just reproduce your scenario - a timeout on server - using radius
accounting and I got only one record (as missed call).
What I noticed to be strange for radius is that the missed and
accounting records looks identical. For syslog there is text suffix, for
DB different table are used, but for radius is the same. Mainly because
the the reason phrase is not included into the radius request.
anyhow, I'm still not able to reproduce your problem......:(
More information about the Devel