aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-03-07 20:47:24 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-03-07 20:47:24 +0000
commit4b7017b53d1124178b8b6324db44ce37e60dfef1 (patch)
tree64e43fa7ec90fac415a22c5753bb7c5d2ed4c53b
parentc1ebcdeb744e42569f34153408170a8f9613ed8f (diff)
Issue #6627 - Don't reset port number of active peers at reload
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@12400 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 942447744..2c76212a3 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -12040,14 +12040,19 @@ static struct sip_user *build_user(const char *name, struct ast_variable *v, int
/*! \brief Set peer defaults before configuring specific configurations */
static void set_peer_defaults(struct sip_peer *peer)
{
- peer->expire = -1;
- peer->pokeexpire = -1;
+ if (peer->expire == 0) {
+ /* Don't reset expire or port time during reload
+ if we have an active registration
+ */
+ peer->expire = -1;
+ peer->pokeexpire = -1;
+ peer->addr.sin_port = htons(DEFAULT_SIP_PORT);
+ }
ast_copy_flags(peer, &global_flags, SIP_FLAGS_TO_COPY);
strcpy(peer->context, default_context);
strcpy(peer->subscribecontext, default_subscribecontext);
strcpy(peer->language, default_language);
strcpy(peer->musicclass, default_musicclass);
- peer->addr.sin_port = htons(DEFAULT_SIP_PORT);
peer->addr.sin_family = AF_INET;
peer->defaddr.sin_family = AF_INET;
peer->capability = global_capability;
@@ -12127,8 +12132,6 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, int
else
speerobjs++;
ASTOBJ_INIT(peer);
- peer->expire = -1;
- peer->pokeexpire = -1;
}
/* Note that our peer HAS had its reference count incrased */
@@ -12136,12 +12139,9 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, int
oldha = peer->ha;
peer->ha = NULL;
set_peer_defaults(peer); /* Set peer defaults */
- if (!found) {
- if (name)
+ if (!found && name)
ast_copy_string(peer->name, name, sizeof(peer->name));
- peer->addr.sin_port = htons(DEFAULT_SIP_PORT);
- peer->addr.sin_family = AF_INET;
- }
+
/* If we have channel variables, remove them (reload) */
if (peer->chanvars) {
ast_variables_destroy(peer->chanvars);