summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorDarren Sessions <dmsessions@gmail.com>2012-09-05 14:12:11 +0000
committerDarren Sessions <dmsessions@gmail.com>2012-09-05 14:12:11 +0000
commit7e46e4d17b703cc2a3f9e6974c7f3f6d991b1671 (patch)
tree49ee7526ef3885c79f7d2c74c74dbe4eafefcd6b /channels
parent35ac3b645e209ae6e200a3331d5520964eb8a33c (diff)
LDAP Realtime Peers Cannot Register
Prior to 1.8, it was not necessary for an explicit "type" to be set for an asterisk LDAP realtime peer. Now the routine find_peer actually checks the type field during registration and fails to find the peer if it is not set. The attached patch makes the realtime type equal whatever type is being searched for if the type is 0 upon return from routine build_peer. (closes issue ASTERISK-17222) Reported by: John Covert Patch by: David Vossel Tested by: Darren Sessions Review: https://reviewboard.asterisk.org/r/2095/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372290 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 2774841a4..8fc808448 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5263,6 +5263,18 @@ static struct sip_peer *realtime_peer(const char *newpeername, struct ast_sockad
goto cleanup;
}
+ /* Previous versions of Asterisk did not require the type field to be
+ * set for real time peers. This statement preserves that behavior. */
+ if (peer->type == 0) {
+ if (which_objects == FINDUSERS) {
+ peer->type = SIP_TYPE_USER;
+ } else if (which_objects == FINDPEERS) {
+ peer->type = SIP_TYPE_PEER;
+ } else {
+ peer->type = SIP_TYPE_PEER | SIP_TYPE_USER;
+ }
+ }
+
ast_debug(3, "-REALTIME- loading peer from database to memory. Name: %s. Peer objects: %d\n", peer->name, rpeerobjs);
if (ast_test_flag(&global_flags[1], SIP_PAGE2_RTCACHEFRIENDS) && !devstate_only) {