dect
/
asterisk
Archived
13
0
Fork 0

Merged revisions 281432 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r281432 | dvossel | 2010-08-09 15:47:53 -0500 (Mon, 09 Aug 2010) | 20 lines
  
  Merged revisions 281430 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2
  
  ........
    r281430 | dvossel | 2010-08-09 15:46:50 -0500 (Mon, 09 Aug 2010) | 13 lines
    
    fixes SIP peers memory leak
    
    We zeroed out the peer's addr before it was removed from the
    peers_by_ip container.  This made it impossible to be removed
    from the container as the addr is the key used by the container
    to find the peer.
    
    (closes issue #17774)
    Reported by: kkm
    Patches:
          017774-sip-peer-leak-1.6.2.10.diff uploaded by kkm (license 888)
          017774-sip-peer-leak-1.8.diff uploaded by kkm (license 888)
  ........
................


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@281433 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
dvossel 2010-08-09 20:49:13 +00:00
parent dbc3315429
commit 476a598eef
1 changed files with 4 additions and 1 deletions

View File

@ -12655,7 +12655,6 @@ static int expire_register(const void *data)
peer->expire = -1;
peer->portinuri = 0;
memset(&peer->addr, 0, sizeof(peer->addr));
destroy_association(peer); /* remove registration data from storage */
set_socket_transport(&peer->socket, peer->default_outbound_transport);
@ -12684,6 +12683,10 @@ static int expire_register(const void *data)
}
}
/* Only clear the addr after we check for destruction. The addr must remain
* in order to unlink from the peers_by_ip container correctly */
memset(&peer->addr, 0, sizeof(peer->addr));
unref_peer(peer, "removing peer ref for expire_register");
return 0;