diff --git a/gold/link/peer.go b/gold/link/peer.go index 6c1a319..a7aecca 100644 --- a/gold/link/peer.go +++ b/gold/link/peer.go @@ -28,7 +28,7 @@ func (m *Me) AddPeer(cfg *PeerConfig) (l *Link) { if ok { return } - if cfg.MTU == 0 || cfg.MTU == 65535 || (m.mtu != 0 && cfg.MTU > m.mtu) { + if cfg.MTU == 0 || cfg.MTU == 65535 || cfg.MTU%8 != 0 || (m.mtu != 0 && cfg.MTU > m.mtu) { panic("invalid mtu for peer " + cfg.PeerIP) } l = &Link{ diff --git a/gold/link/send.go b/gold/link/send.go index 92637ac..8c76305 100644 --- a/gold/link/send.go +++ b/gold/link/send.go @@ -33,7 +33,7 @@ func (l *Link) WriteAndPut(p *head.Packet, istransfer bool) (n int, err error) { for ; int(totl)-i > int(l.mtu); i += int(l.mtu) { logrus.Debugln("[link] split frag", i, ":", i+int(l.mtu), ", remain:", int(totl)-i-int(l.mtu)) packet.Data = data[:int(l.mtu)] - cnt, err := l.write(packet, teatype, totl, uint16(uint(i)>>3), istransfer, true) + cnt, err := l.write(packet, teatype, totl, uint16(i>>3), istransfer, true) n += cnt if err != nil { return n, err @@ -43,7 +43,7 @@ func (l *Link) WriteAndPut(p *head.Packet, istransfer bool) (n int, err error) { } packet.Put() p.Data = data - cnt, err := l.write(p, teatype, totl, uint16(uint(i)>>3), istransfer, false) + cnt, err := l.write(p, teatype, totl, uint16(i>>3), istransfer, false) p.Put() n += cnt return n, err