public void HandleEdgeSend(Edge from, ICopyable data)
{
TunnelEdge te = from as TunnelEdge;
Connection forwarder = te.NextForwarder;
if(te.RemoteID == -1) {
Address target = (te.RemoteTA as TunnelTransportAddress).Target;
ISender sender = new ForwardingSender(_node, forwarder.Address, target);
sender.Send(new CopyList(PType.Protocol.Tunneling, te.MId, data));
} else {
try {
forwarder.Edge.Send(new CopyList(te.Header, te.MId, data));
} catch {
// We could be sending aon a closed edge... we could deal with this
// better, but let's just let the system take its natural course.
}
}
}