12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // Copyright © 2021 Jeffrey H. Johnson <trnsz@pobox.com>.
- // Copyright © 2015 Daniel Fu <daniel820313@gmail.com>.
- // Copyright © 2019 Loki 'l0k18' Verloren <stalker.loki@protonmail.ch>.
- // Copyright © 2021 Gridfinity, LLC. <admin@gridfinity.com>.
- //
- // All rights reserved.
- //
- // All use of this code is governed by the MIT license.
- // The complete license is available in the LICENSE file.
- //go:build !linux
- // +build !linux
- package gfcp
- import (
- "sync/atomic"
- )
- func (
- s *UDPSession,
- ) readLoop() {
- buf := make(
- []byte,
- GFcpMtuLimit,
- )
- var src string
- for {
- if n, addr, err := s.conn.ReadFrom(
- buf,
- ); err == nil {
- if src == "" {
- src = addr.String()
- } else if addr.String() != src {
- atomic.AddUint64(
- &DefaultSnsi.GFcpInputErrors,
- 1,
- )
- continue
- }
- if n >= s.headerSize+GfcpOverhead {
- s.packetInput(
- buf[:n],
- )
- } else {
- atomic.AddUint64(
- &DefaultSnsi.GFcpInputErrors,
- 1,
- )
- }
- } else {
- s.chReadError <- err
- return
- }
- }
- }
- func (
- l *Listener,
- ) monitor() {
- buf := make(
- []byte,
- GFcpMtuLimit,
- )
- for {
- if n, from, err := l.conn.ReadFrom(
- buf,
- ); err == nil {
- if n >= l.headerSize+GfcpOverhead {
- l.packetInput(
- buf[:n],
- from,
- )
- } else {
- atomic.AddUint64(
- &DefaultSnsi.GFcpInputErrors,
- 1,
- )
- }
- } else {
- return
- }
- }
- }
|