/*! \brief expire_register: Expire registration of SIP peer ---*/ static int expire_register(void *data) { struct sip_peer *peer = data; memset(&peer->addr, 0, sizeof(peer->addr)); destroy_association(peer); ast_log(LOG_NOTICE, "Expiring SIP '%s'\n", p->name); manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: SIP/%s\r\nPeerStatus: Unregistered\r\nCause: Expired\r\n", peer->name); register_peer_exten(peer, 0); peer->expire = -1; ast_device_state_changed("SIP/%s", peer->name); if (ast_test_flag(peer, SIP_SELFDESTRUCT) || ast_test_flag((&peer->flags_page2), SIP_PAGE2_RTAUTOCLEAR)) { peer = ASTOBJ_CONTAINER_UNLINK(&peerl, peer); ASTOBJ_UNREF(peer, sip_destroy_peer); } return 0; }