Hi, using the provided keepalive function on iOS in pjsua/pjsua_app.c void keepAliveFunction(int timeout) { int i; for (i=0; i<(int)pjsua_acc_get_count(); ++i) { if (!pjsua_acc_is_valid(i)) continue; if (app_config.acc_cfg[i].reg_timeout < timeout) app_config.acc_cfg[i].reg_timeout = timeout; pjsua_acc_set_registration(i, PJ_TRUE); } } I noticed in my server logs that pjsip kept re-registering itself, therefore causing "log noise" I just wondered why this pattern of re-registering was choosed over the other pattern that I found, actually just sending PJSIP_TCP_KEEP_ALIVE_DATA,which is "\r\n\r\n" like in the pjsip/sip_transport_tcp.c:tcp_keep_alive_timer() function (I understand that under iOS backrounding features, we had to use the system provided keepalives rather than the pjsip native) Is there any reason for re-registering itself at each keepalive ? Regards, John