aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-09 22:03:38 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-09 22:03:38 +0000
commit058d5bc02c72af449ebc403337d0fa1b5678fce0 (patch)
treed967219e28d3442aba80c4558aab9b1c2d4675eb /channels
parent8c051bf3dc1f8e91d5a728ff9de034c9412f33ac (diff)
merge brian's cleanups
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2939 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_sip.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 0c02a06db..c1ad16ee6 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -3648,6 +3648,7 @@ static int parse_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_req
int expiry = atoi(expires);
char *c, *n, *pt;
int port;
+ char *useragent;
struct hostent *hp;
struct ast_hostent ahp;
struct sockaddr_in oldsin;
@@ -3679,6 +3680,7 @@ static int parse_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_req
ast_sched_del(sched, p->expire);
p->expire = -1;
ast_db_del("SIP/Registry", p->name);
+ strcpy(p->useragent, "");
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Unregistered SIP '%s'\n", p->name);
return 0;
@@ -3744,10 +3746,13 @@ static int parse_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_req
}
/* Save User agent */
- strncpy(p->useragent, get_header(req, "User-Agent"),sizeof(p->useragent));
- if (option_verbose > 2)
- ast_verbose(VERBOSE_PREFIX_3 "Saved useragent \"%s\" for peer %s\n",p->useragent,p->name);
-
+ useragent = get_header(req, "User-Agent");
+ if(useragent && strcasecmp(useragent, p->useragent)) {
+ strncpy(p->useragent, get_header(req, "User-Agent"),sizeof(p->useragent));
+ if (option_verbose > 2) {
+ ast_verbose(VERBOSE_PREFIX_3 "Saved useragent \"%s\" for peer %s\n",p->useragent,p->name);
+ }
+ }
return 0;
}