refactor: reduce coupling between connections and crypto
This commit is contained in:
1 parent
4cc0cf795d
commit
fcd44c37e1
2 files changed
+5
-5
No files matched your search
+2
-2
@@ -246,7 +246,7 @@ func (ne *NaClEncryptor) TotalLen() int {
|
||||
|
||||
// Frame Decryptors
|
||||
|
||||
type FrameConsumer func(conn *LocalConnection, src []byte, dst []byte, frame []byte)
|
||||
type FrameConsumer func(src []byte, dst []byte, frame []byte)
|
||||
|
||||
type Decryptor interface {
|
||||
IterateFrames([]byte, FrameConsumer) error
|
||||
@@ -294,7 +294,7 @@ func (nd *NonDecryptor) IterateFrames(packet []byte, consumer FrameConsumer) err
|
||||
}
|
||||
frame := packet[:length]
|
||||
packet = packet[length:]
|
||||
consumer(nd.conn, srcNameByte, dstNameByte, frame)
|
||||
consumer(srcNameByte, dstNameByte, frame)
|
||||
}
|
||||
if len(packet) > 0 {
|
||||
return PacketDecodingError{Desc: fmt.Sprintf("%d octets of trailing garbage", len(packet))}
|
||||
|
||||
+3
-3
@@ -250,7 +250,7 @@ func (router *Router) udpReader(conn *net.UDPConn, po PacketSink) {
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
if err := relayConn.Decryptor.IterateFrames(packet, router.handleUDPPacketFunc(dec, sender, po)); err != nil {
|
||||
if err := relayConn.Decryptor.IterateFrames(packet, router.handleUDPPacketFunc(relayConn, dec, sender, po)); err != nil {
|
||||
// Errors during UDP packet decoding / processing are
|
||||
// non-fatal. One common cause is that we receive and
|
||||
// attempt to decrypt a "stray" packet. This can actually
|
||||
@@ -267,8 +267,8 @@ func (router *Router) udpReader(conn *net.UDPConn, po PacketSink) {
|
||||
}
|
||||
}
|
||||
|
||||
func (router *Router) handleUDPPacketFunc(dec *EthernetDecoder, sender *net.UDPAddr, po PacketSink) FrameConsumer {
|
||||
return func(relayConn *LocalConnection, srcNameByte, dstNameByte []byte, frame []byte) {
|
||||
func (router *Router) handleUDPPacketFunc(relayConn *LocalConnection, dec *EthernetDecoder, sender *net.UDPAddr, po PacketSink) FrameConsumer {
|
||||
return func(srcNameByte, dstNameByte []byte, frame []byte) {
|
||||
srcPeer, found := router.Peers.Fetch(PeerNameFromBin(srcNameByte))
|
||||
if !found {
|
||||
return
|
||||
|
||||
Reference in new issue
Block a user