aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-03 05:14:52 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-05-03 05:14:52 +0000
commit8d233af74b8ad171e4868f1c9eb2476cc617174e (patch)
treeab6f1030b1631b77b1334866239338e3d4b8b6ab /channels
parent06702493e015049828f26e4c72a0d20e0e5ae495 (diff)
Add "insecure=very" where we don't authenticate peers who are registered
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2873 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_sip.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e39ceae95..30a40a0df 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4502,6 +4502,11 @@ static int check_user(struct sip_pvt *p, struct sip_request *req, char *cmd, cha
strncpy(p->context, peer->context, sizeof(p->context) - 1);
strncpy(p->peersecret, peer->secret, sizeof(p->peersecret) - 1);
strncpy(p->peermd5secret, peer->md5secret, sizeof(p->peermd5secret) - 1);
+ if (peer->insecure > 1) {
+ /* Pretend there is no required authentication if insecure is "very" */
+ strcpy(p->peersecret, "");
+ strcpy(p->peermd5secret, "");
+ }
p->callgroup = peer->callgroup;
p->pickupgroup = peer->pickupgroup;
p->capability = peer->capability;
@@ -6704,7 +6709,12 @@ static struct sip_peer *build_peer(char *name, struct ast_variable *v)
else
peer->capability &= ~format;
} else if (!strcasecmp(v->name, "insecure")) {
- peer->insecure = ast_true(v->value);
+ if (!strcasecmp(v->value, "very")) {
+ peer->insecure = 2;
+ } else if (ast_true(v->value))
+ peer->insecure = 1;
+ else
+ peer->insecure = 0;
} else if (!strcasecmp(v->name, "qualify")) {
if (!strcasecmp(v->value, "no")) {
peer->maxms = 0;