Index: channels/chan_sip.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v retrieving revision 1.529 diff -u -r1.529 chan_sip.c --- channels/chan_sip.c 9 Oct 2004 20:08:41 -0000 1.529 +++ channels/chan_sip.c 9 Oct 2004 21:59:34 -0000 @@ -4223,7 +4223,8 @@ { struct sip_peer *p = data; memset(&p->addr, 0, sizeof(p->addr)); - ast_db_del("SIP/Registry", p->name); + if (!p->temponly) + ast_db_del("SIP/Registry", p->name); manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: SIP/%s\r\nPeerStatus: Unregistered\r\nCause: Expired\r\n", p->name); register_peer_exten(p, 0); p->expire = -1; @@ -4253,7 +4254,7 @@ struct in_addr in; char *c, *d, *u, *e; int expiry; - if (!ast_db_get("SIP/Registry", p->name, data, sizeof(data))) { + if (!p->temponly && !ast_db_get("SIP/Registry", p->name, data, sizeof(data))) { c = strchr(data, ':'); if (c) { *c = '\0'; @@ -4342,7 +4343,8 @@ if (p->expire > -1) ast_sched_del(sched, p->expire); p->expire = -1; - ast_db_del("SIP/Registry", p->name); + if (!p->temponly) + ast_db_del("SIP/Registry", p->name); register_peer_exten(p, 0); p->fullcontact[0] = '\0'; p->useragent[0] = '\0'; @@ -4409,7 +4411,8 @@ p->expire = ast_sched_add(sched, (expiry + 10) * 1000, expire_register, p); 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); + if (!p->temponly) + ast_db_put("SIP/Registry", p->name, data); manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: SIP/%s\r\nPeerStatus: Registered\r\n", p->name); if (inaddrcmp(&p->addr, &oldsin)) { sip_poke_peer(p);