private bool HandleSendQueue() { I2NPMessage[] rawdata; lock ( SendRawQueue ) { rawdata = SendRawQueue.ToArray(); SendRawQueue.Clear(); } foreach (var msg in rawdata) { #if LOG_ALL_TUNNEL_TRANSFER if (FilterMessageTypes.Update(new HashedItemGroup((int)msg.MessageType, 0x1701))) { Logging.LogDebug($"OutboundTunnel: Send raw {NextHop.Id32Short} : {msg}"); } #endif Bandwidth.DataSent(msg.Payload.Length); TransportProvider.Send(NextHop, msg); } if (SendQueue.Count == 0) { return(true); } IEnumerable <TunnelMessage> messages; lock ( SendQueue ) { messages = SendQueue.ToArray(); SendQueue.Clear(); } return(CreateTunnelMessageFragments(messages)); }