summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-05-03 05:14:52 +0000
committerMark Spencer <markster@digium.com>2004-05-03 05:14:52 +0000
commitbbaf536f6a88ab8a4999b965b49843687c503f7c (patch)
treeab6f1030b1631b77b1334866239338e3d4b8b6ab /channels
parentb50ecc25b2ac690b6a731bfd6ff4498e9c9f4fd0 (diff)
Add "insecure=very" where we don't authenticate peers who are registered
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2873 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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;