hi aymeric,
… and a last contribution before the wwll-deserved Christmas holiday:
we recently had a user-agent with 2 SIP calls;
one was active and the second is permanently retried and always receives a 456xx failure response.
since the IDs are allocated cyclically from 0 to 32767, without any check, if a newly allocated ID
is already in use (!!) we ran into the problem, that after the wrap-around
the established call was terminated because of the accidental re-use of its call- or dialog-id !
I did not yet implement a clean ID-allocation,
but I would suggest to increase the wrap-around limit to INT_MAX = 0x7FFFFFFF
(this at least makes the problem occur 65535 times later).
and the variable type of the IDs already is int.
the change will occur for:
jreg.c, line 42:
if (r_id == INT_MAX) /* keep it non-negative */
eXosip.c, line 1081:
if (static_id == INT_MAX)
jpublish.c, line 133:
if (p_id == INT_MAX) /* keep it non-negative */
by using the definition of INT_MAX from eXosip2.h, line 110:
#ifndef INT_MAX
#define INT_MAX 0x7FFFFFFF
#endif
br, merry Christmas and a happy new year !
christoph