public SecurityAssociation GetSecureSender(Address target)
{
PeerSecAssociation sa = null;
bool new_sa = false;
lock(_sync) {
if(_address_to_sa.ContainsKey(target)) {
sa = _address_to_sa[target] as PeerSecAssociation;
} else {
AHSender sender = new AHExactSender(_node, target);
sa = base.CreateSecurityAssociation(sender, SecurityPolicy.DefaultSPI, true);
_address_to_sa[target] = sa;
_sa_to_address[sa] = target;
new_sa = true;
}
}
if(new_sa) {
StartSA(sa);
}
return sa;
}