diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 461a8dd7a39e210cbc1b8515e7407527eadc836f..3f84ac9f335a4ef5a154ac5f20e83d1a7431de4a 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4407,6 +4407,8 @@ static int parse_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_req
 		expiry = max_expiry;
 	if (!p->temponly)
 		p->expire = ast_sched_add(sched, (expiry + 10) * 1000, expire_register, p);
+	else
+		p->expire = -1;
 	pvt->expiry = expiry;
 	snprintf(data, sizeof(data), "%s:%d:%d:%s:%s", ast_inet_ntoa(iabuf, sizeof(iabuf), p->addr.sin_addr), ntohs(p->addr.sin_port), expiry, p->username, p->fullcontact);
 	ast_db_put("SIP/Registry", p->name, data);