Hi,
I noticed a strange assertion error on every other outgoing SIP
registration (only on OSX but not on linux), similar to
https://freeswitch.org/jira/browse/FS-3541
su_time_ms() will return an unsigned 32bit value of the milliseconds passed
since 1900-01-01 (not since 1970-01-01).
According to my limited understanding of math this could have only worked
until the 18th of February in 1900.
After that it will overflow and cause the agent_timer in nta.c to not be
scheduled, ending up in the "time not set" if-clause starting at line 1271
in nta.c and crashing due to the assert of "agent->sa_out.trying->q_head"
Does anybody have an idea how to easily fix this (without breaking things
on 32bit systems)?
Cheers,
Klaus
P.S. To test this i made a very simple test program:
#include <stdlib.h>
#include <sofia-sip/nua.h>
static su_root_t *root = NULL;
static nua_t *sip_nua = NULL;
void sip_register(char *username, char *password, char *host) {
char to[512];
char uri[512];
snprintf(to, sizeof(to) - 1, "\"%s\" <sip:%s@%s>", username, username,
host);
snprintf(uri, sizeof(uri) - 1, "sip:%s", host);
nua_handle_t *handle = nua_handle(sip_nua, NULL, SIPTAG_TO_STR(to),
TAG_END());
nua_register(handle,
NUTAG_REGISTRAR(uri),
SIPTAG_FROM_STR(to),
TAG_END()
);
}
static void sip_event_callback(nua_event_t event,
int status,
char const *phrase,
nua_t *nua,
nua_magic_t *magic,
nua_handle_t *nh,
nua_hmagic_t *hmagic,
sip_t const *sip,
tagi_t tags[]) {
switch (event) {
case nua_r_register:
break;
default:
printf("sofia_event_callback: unhandled event %s\n",
nua_event_name(event));
}
}
static void register_test() {
sip_register("test", "test", "127.0.0.1");
}
int main(int argc, char *argv[]) {
struct rlimit limits;
int i = 0;
limits.rlim_cur = RLIM_INFINITY;
limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &limits);
su_init();
root = su_root_create(NULL);
sip_nua = nua_create(root,
sip_event_callback,
NULL,
NUTAG_URL("sip:0.0.0.0:*"),
TAG_END());
for (i = 0; i < 1000; i++) {
su_root_step(root, 100);
register_test();
}
printf("completed %d register tests.\n", i);
}
------------------------------------------------------------------------------
_______________________________________________
Sofia-sip-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel