diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 2febf0975693d32ade854d14b8a38f5705b48d20..54e43e5056a0bce7fc3ef20ce0a28133a64f5046 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -30934,7 +30934,16 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str static int peer_markall_func(void *device, void *arg, int flags) { struct sip_peer *peer = device; - if (!peer->selfdestruct || sip_cfg.autocreatepeer != AUTOPEERS_PERSIST) { + if (!peer->selfdestruct) { + peer->the_mark = 1; + } + return 0; +} + +static int peer_markall_autopeers_func(void *device, void *arg, int flags) +{ + struct sip_peer *peer = device; + if (peer->selfdestruct) { peer->the_mark = 1; } return 0; @@ -31076,6 +31085,11 @@ static int reload_config(enum channelreloadreason reason) ast_mutex_unlock(&authl_lock); cleanup_all_regs(); + + /* Then, actually destroy users and registry */ + ASTOBJ_CONTAINER_DESTROYALL(®l, sip_registry_destroy); + ast_debug(4, "--------------- Done destroying registry list\n"); + ao2_t_callback(peers, OBJ_NODATA, peer_markall_func, NULL, "callback to mark all peers"); } /* Reset certificate handling for TLS sessions */ @@ -31802,11 +31816,8 @@ static int reload_config(enum channelreloadreason reason) max_subexpiry = max_expiry; } - if (reason != CHANNEL_MODULE_LOAD) { - /* Then, actually destroy users and registry */ - ASTOBJ_CONTAINER_DESTROYALL(®l, sip_registry_destroy); - ast_debug(4, "--------------- Done destroying registry list\n"); - ao2_t_callback(peers, OBJ_NODATA, peer_markall_func, NULL, "callback to mark all peers"); + if (reason != CHANNEL_MODULE_LOAD && sip_cfg.autocreatepeer != AUTOPEERS_PERSIST) { + ao2_t_callback(peers, OBJ_NODATA, peer_markall_autopeers_func, NULL, "callback to mark autopeers for destruction"); } if (subscribe_network_change) { diff --git a/configs/sip.conf.sample b/configs/sip.conf.sample index ba481c048475dbdc8b8202cf5209fc8292fe2432..3d6db9798ee2f0588031e98bb3078fac3fc18fc6 100644 --- a/configs/sip.conf.sample +++ b/configs/sip.conf.sample @@ -510,14 +510,14 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls ; ;refer_addheaders=yes ; on by default -;autocreatepeers=no ; Allow any not exsplicitly defined here UAC to register - ; WITHOUT AUTHENTICATION. Enabling this options poses a high - ; potential security risk and should be avoided unless the - ; server is behind a trusted firewall. - ; When enabled by setting to "yes", the autocreated peers are - ; pruned immediately when the "sip reload" command is issued - ; through CLI. When enabled by setting to "persist", the auto- - ; created peers survive the "sip reload" command. +;autocreatepeer=no ; Allow any UAC not explicitly defined to register + ; WITHOUT AUTHENTICATION. Enabling this options poses a high + ; potential security risk and should be avoided unless the + ; server is behind a trusted firewall. + ; If set to "yes", then peers created in this fashion + ; are purged during SIP reloads. + ; When set to "persist", the peers created in this fashion + ; are not purged during SIP reloads. ; ;------------------------ TLS settings ------------------------------------------------------------