func loadTable() error { if *tableFileName == "" { return nil } f, err := os.Open(*tableFileName) if os.IsNotExist(err) { return nil } if err != nil { return fmt.Errorf("error opening table file: %s", err) } defer f.Close() added := 0 for { b := make([]byte, krpc.CompactIPv4NodeInfoLen) _, err := io.ReadFull(f, b) if err == io.EOF { break } if err != nil { return fmt.Errorf("error reading table file: %s", err) } var ni krpc.NodeInfo err = ni.UnmarshalCompactIPv4(b) if err != nil { return fmt.Errorf("error unmarshaling compact node info: %s", err) } s.AddNode(ni) added++ } log.Printf("loaded %d nodes from table file", added) return nil }