diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5ad3affedff0b3939d72144000e1689731baaa9e..c3b7f9e2cf35a87124375f165c6f125a9503912f 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5584,7 +5584,7 @@ static int transmit_register(struct sip_registry *r, int sipmethod, char *auth,
 			p->sa.sin_port = htons(r->portno);
 		else 	/* Set registry port to the port set from the peer definition/srv or default */
 			r->portno = p->sa.sin_port;
-		ast_set_flag(p, SIP_OUTGOING);	/* Registration is outgoing call */
+		ast_set_flag(&p->flags[0], SIP_OUTGOING);	/* Registration is outgoing call */
 		r->call=p;			/* Save pointer to SIP packet */
 		p->registry = ASTOBJ_REF(r);	/* Add pointer to registry in packet */
 		if (!ast_strlen_zero(r->secret))	/* Secret (password) */
@@ -11668,6 +11668,7 @@ static int sip_poke_noanswer(void *data)
 static int sip_poke_peer(struct sip_peer *peer)
 {
 	struct sip_pvt *p;
+
 	if (!peer->maxms || !peer->addr.sin_addr.s_addr) {
 		/* IF we have no IP, or this isn't to be monitored, return
 		  imeediately after clearing things out */
@@ -11688,8 +11689,10 @@ static int sip_poke_peer(struct sip_peer *peer)
 	
 	memcpy(&p->sa, &peer->addr, sizeof(p->sa));
 	memcpy(&p->recv, &peer->addr, sizeof(p->sa));
+	ast_copy_flags(&peer->flags[0], &global_flags[0], SIP_FLAGS_TO_COPY);
+	ast_copy_flags(&peer->flags[1], &global_flags[1], SIP_PAGE2_FLAGS_TO_COPY);
 
-	/* Send options to peer's fullcontact */
+	/* Send OPTIONs to peer's fullcontact */
 	if (!ast_strlen_zero(peer->fullcontact))
 		ast_string_field_set(p, fullcontact, peer->fullcontact);