All pastes #1315134 Raw Edit

Miscellany

public diff v1 · immutable
#1315134 ·published 2009-01-21 20:29 UTC
rendered paste body
Index: channels/chan_sip.c===================================================================--- channels/chan_sip.c	(revision 169711)+++ channels/chan_sip.c	(working copy)@@ -1802,6 +1802,11 @@ 	AST_LIST_ENTRY(sip_mailbox) entry; }; +enum sip_peer_type {+	SIP_TYPE_PEER,+	SIP_TYPE_USER,+};+ /*! \brief Structure for SIP peer data, we place calls to peers if registered  or fixed IP address (host)  */ /* XXX field 'name' must be first otherwise sip_addrcmp() will fail, as will astobj2 hashing of the structure */@@ -1885,6 +1890,7 @@ 	int timer_t1;			/*!<  The maximum T1 value for the peer */ 	int timer_b;			/*!<  The maximum timer B (transaction timeouts) */ 	int deprecated_username; /*!< If it's a realtime peer, are they using the deprecated "username" instead of "defaultuser" */+	enum sip_peer_type type; };  @@ -13321,7 +13327,7 @@ 	user_iter = ao2_iterator_init(peers, 0); 	while ((user = ao2_iterator_next(&user_iter))) { 		ao2_lock(user);-		if (user->onlymatchonip == TRUE) {+		if (user->type & SIP_TYPE_USER) { 			ao2_unlock(user); 			unref_peer(user, "sip show users"); 			continue;@@ -13513,7 +13519,7 @@ 	while ((peer = ao2_t_iterator_next(&i, "iterate thru peers table"))) {	 		ao2_lock(peer); -		if (peer->onlymatchonip == FALSE) {+		if (peer->type & SIP_TYPE_PEER) { 			ao2_unlock(peer); 			unref_peer(peer, "unref peer because it's actually a user"); 			continue;@@ -14392,7 +14398,7 @@ 	user_iter = ao2_iterator_init(peers, 0); 	while ((user = ao2_iterator_next(&user_iter))) { 		ao2_lock(user);-		if (user->onlymatchonip == TRUE) {+		if (user->type & SIP_TYPE_USER) { 			ao2_unlock(user); 			unref_peer(user, "complete sip user"); 			continue;@@ -22392,8 +22398,16 @@ 				ast_str_set(&fullcontact, 0, "%s", v->value); 			} 		} else if (!strcasecmp(v->name, "type")) {-			if (!strcasecmp(v->value, "peer")) +			if (!strcasecmp(v->value, "peer")) { 				peer->onlymatchonip = TRUE;		/* For realtime support, add type=peer in the table */+				peer->type = SIP_TYPE_PEER;+			} else if (!strcasecmp(v->value, "user")) {+				peer->onlymatchonip = FALSE;+				peer->type = SIP_TYPE_USER;+			} else if (!strcasecmp(v->value, "friend")) {+				peer->onlymatchonip = FALSE;+				peer->type = SIP_TYPE_USER | SIP_TYPE_PEER;+			} 		} else if (!strcasecmp(v->name, "remotesecret")) { 			ast_string_field_set(peer, remotesecret, v->value); 		} else if (!strcasecmp(v->name, "secret")) {