diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 6b3fa6990618273211a7f364f01114238975f6a3..2febf0975693d32ade854d14b8a38f5705b48d20 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -30445,7 +30445,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
 			} else if (!strcasecmp(v->name, "host")) {
 				if (!strcasecmp(v->value, "dynamic")) {
 					/* They'll register with us */
-					if (!found || !peer->host_dynamic) {
+					if ((!found && !realtime) || !peer->host_dynamic) {
 						/* Initialize stuff if this is a new peer, or if it used to
 						 * not be dynamic before the reload. */
 						ast_sockaddr_setnull(&peer->addr);