я пробовал изменять таймауты, результата никакого.
Заметил я, что в базу не всегда пишется айпишники пользователей, сделали правочку в chan_iax2.c:
static void realtime_update_peer(const char *peername, struct sockaddr_in *sin, time_t regtime)
{
char port[10];
char regseconds[20];
snprintf(regseconds, sizeof(regseconds), "%d", (int)regtime);
snprintf(port, sizeof(port), "%d", ntohs(sin->sin_port));
if (sin->sin_addr.s_addr != 0)
ast_update_realtime("iaxpeers", "name", peername,
"ipaddr", ast_inet_ntoa(sin->sin_addr), "port", port,
"regseconds", regseconds, NULL);
else
ast_update_realtime("iaxpeers", "name", peername, "port", port,
"regseconds", regseconds, NULL);
}
Типа, если астериск хочет прописать айпишник пользователя 0.0.0.0, то мы это в базу не пишем.