I'm working on a SIP SUBSCRIBE/NOTIFY server using Sofia-SIP 1.12.11. It is running on an isolated system which synchronises time from satellites. When the time is obtained, and the system time jumps (e.g. from Unix time value 200 to Unix time value 1402307300), then the program aborts with an assertion:
sip-server: nta.c:1280: agent_timer: Assertion `!agent->sa_in.completed->q_head' failed. Aborted It looks as though agent_timer() in nta.c is written with an implicit requirement that the system time doesn't jump. It is deriving a wrapping signed 32-bit millisecond timer value from the system time. If the system time jumps suddenly, then that may trigger the assert. I'm not sure exactly what time values will trigger it. It looks as though it should happen if the millisecond timer changes by roughly 2³¹ or more, but my test data isn't conclusive. What is a good way to resolve this? Ideally, it would be good if Sofia-SIP would use a monotonically increasing timer instead, using the su_monotime() function. I'm not sure how major a change this is, and whether it would be accepted into the Sofia-SIP project (where is the "official" repository for Sofia-SIP development now?). If system time is used, then firstly the assert should be avoided. Secondly, there is a question of whether time delays can be accurately preserved, or whether time delays may trigger prematurely. Regards, Craig McQueen ------------------------------------------------------------------------------ HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems _______________________________________________ Sofia-sip-devel mailing list Sofia-sip-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel