diff --git a/discover/cmd/discosrv/main.go b/discover/cmd/discosrv/main.go index c53e4a89..9e751a88 100644 --- a/discover/cmd/discosrv/main.go +++ b/discover/cmd/discosrv/main.go @@ -80,12 +80,6 @@ func main() { magic := binary.BigEndian.Uint32(buf) switch magic { - case discover.AnnouncementMagicV1: - handleAnnounceV1(addr, buf) - - case discover.QueryMagicV1: - handleQueryV1(conn, addr, buf) - case discover.AnnouncementMagicV2: handleAnnounceV2(addr, buf) @@ -123,75 +117,6 @@ func limit(addr *net.UDPAddr) bool { return false } -func handleAnnounceV1(addr *net.UDPAddr, buf []byte) { - var pkt discover.AnnounceV1 - err := pkt.UnmarshalXDR(buf) - if err != nil { - log.Println("AnnounceV1 Unmarshal:", err) - log.Println(hex.Dump(buf)) - return - } - if debug { - log.Printf("<- %v %#v", addr, pkt) - } - - ip := addr.IP.To4() - if ip == nil { - ip = addr.IP.To16() - } - node := Node{ - Addresses: []Address{{ - IP: ip, - Port: pkt.Port, - }}, - Updated: time.Now(), - } - - lock.Lock() - nodes[pkt.NodeID] = node - lock.Unlock() -} - -func handleQueryV1(conn *net.UDPConn, addr *net.UDPAddr, buf []byte) { - var pkt discover.QueryV1 - err := pkt.UnmarshalXDR(buf) - if err != nil { - log.Println("QueryV1 Unmarshal:", err) - log.Println(hex.Dump(buf)) - return - } - if debug { - log.Printf("<- %v %#v", addr, pkt) - } - - lock.Lock() - node, ok := nodes[pkt.NodeID] - queries++ - lock.Unlock() - - if ok && len(node.Addresses) > 0 { - pkt := discover.AnnounceV1{ - Magic: discover.AnnouncementMagicV1, - NodeID: pkt.NodeID, - Port: node.Addresses[0].Port, - IP: node.Addresses[0].IP, - } - if debug { - log.Printf("-> %v %#v", addr, pkt) - } - - tb := pkt.MarshalXDR() - _, _, err = conn.WriteMsgUDP(tb, nil, addr) - if err != nil { - log.Println("QueryV1 response write:", err) - } - - lock.Lock() - answered++ - lock.Unlock() - } -} - func handleAnnounceV2(addr *net.UDPAddr, buf []byte) { var pkt discover.AnnounceV2 err := pkt.UnmarshalXDR(buf) diff --git a/discover/packets.go b/discover/packets.go index abd25412..87b42678 100644 --- a/discover/packets.go +++ b/discover/packets.go @@ -1,22 +1,5 @@ package discover -const ( - AnnouncementMagicV1 = 0x20121025 - QueryMagicV1 = 0x19760309 -) - -type QueryV1 struct { - Magic uint32 - NodeID string // max:64 -} - -type AnnounceV1 struct { - Magic uint32 - Port uint16 - NodeID string // max:64 - IP []byte // max:16 -} - const ( AnnouncementMagicV2 = 0x029E4C77 QueryMagicV2 = 0x23D63A9A diff --git a/discover/packets_xdr.go b/discover/packets_xdr.go index d8fcb66a..289ce16b 100644 --- a/discover/packets_xdr.go +++ b/discover/packets_xdr.go @@ -7,89 +7,6 @@ import ( "github.com/calmh/syncthing/xdr" ) -func (o QueryV1) EncodeXDR(w io.Writer) (int, error) { - var xw = xdr.NewWriter(w) - return o.encodeXDR(xw) -} - -func (o QueryV1) MarshalXDR() []byte { - var buf bytes.Buffer - var xw = xdr.NewWriter(&buf) - o.encodeXDR(xw) - return buf.Bytes() -} - -func (o QueryV1) encodeXDR(xw *xdr.Writer) (int, error) { - xw.WriteUint32(o.Magic) - if len(o.NodeID) > 64 { - return xw.Tot(), xdr.ErrElementSizeExceeded - } - xw.WriteString(o.NodeID) - return xw.Tot(), xw.Error() -} - -func (o *QueryV1) DecodeXDR(r io.Reader) error { - xr := xdr.NewReader(r) - return o.decodeXDR(xr) -} - -func (o *QueryV1) UnmarshalXDR(bs []byte) error { - var buf = bytes.NewBuffer(bs) - var xr = xdr.NewReader(buf) - return o.decodeXDR(xr) -} - -func (o *QueryV1) decodeXDR(xr *xdr.Reader) error { - o.Magic = xr.ReadUint32() - o.NodeID = xr.ReadStringMax(64) - return xr.Error() -} - -func (o AnnounceV1) EncodeXDR(w io.Writer) (int, error) { - var xw = xdr.NewWriter(w) - return o.encodeXDR(xw) -} - -func (o AnnounceV1) MarshalXDR() []byte { - var buf bytes.Buffer - var xw = xdr.NewWriter(&buf) - o.encodeXDR(xw) - return buf.Bytes() -} - -func (o AnnounceV1) encodeXDR(xw *xdr.Writer) (int, error) { - xw.WriteUint32(o.Magic) - xw.WriteUint16(o.Port) - if len(o.NodeID) > 64 { - return xw.Tot(), xdr.ErrElementSizeExceeded - } - xw.WriteString(o.NodeID) - if len(o.IP) > 16 { - return xw.Tot(), xdr.ErrElementSizeExceeded - } - xw.WriteBytes(o.IP) - return xw.Tot(), xw.Error() -} - -func (o *AnnounceV1) DecodeXDR(r io.Reader) error { - xr := xdr.NewReader(r) - return o.decodeXDR(xr) -} - -func (o *AnnounceV1) UnmarshalXDR(bs []byte) error { - var buf = bytes.NewBuffer(bs) - var xr = xdr.NewReader(buf) - return o.decodeXDR(xr) -} - -func (o *AnnounceV1) decodeXDR(xr *xdr.Reader) error { - o.Magic = xr.ReadUint32() - o.Port = xr.ReadUint16() - o.NodeID = xr.ReadStringMax(64) - o.IP = xr.ReadBytesMax(16) - return xr.Error() -} - func (o QueryV2) EncodeXDR(w io.Writer) (int, error) { var xw = xdr.NewWriter(w) return o.encodeXDR(xw)