* Queues a keepalive if no packets are queued for peer */
()
| 79 | /* Queues a keepalive if no packets are queued for peer |
| 80 | */ |
| 81 | func (peer *Peer) SendKeepalive() { |
| 82 | if len(peer.queue.staged) == 0 && peer.isRunning.Load() { |
| 83 | elem := peer.device.NewOutboundElement() |
| 84 | elemsContainer := peer.device.GetOutboundElementsContainer() |
| 85 | elemsContainer.elems = append(elemsContainer.elems, elem) |
| 86 | select { |
| 87 | case peer.queue.staged <- elemsContainer: |
| 88 | peer.device.Log.Verbosef("%v - Sending keepalive packet", peer) |
| 89 | default: |
| 90 | peer.device.PutMessageBuffer(elem.buffer) |
| 91 | peer.device.PutOutboundElement(elem) |
| 92 | peer.device.PutOutboundElementsContainer(elemsContainer) |
| 93 | } |
| 94 | } |
| 95 | peer.SendStagedPackets() |
| 96 | } |
| 97 | |
| 98 | func (peer *Peer) SendHandshakeInitiation(isRetry bool) error { |
| 99 | if !isRetry { |
no test coverage detected