summaryrefslogtreecommitdiff
path: root/load.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-09 06:22:47 -0500
committerJeff Carr <[email protected]>2025-10-09 06:44:05 -0500
commit1f282c7160e3776d6b532427e6c00ad82897a815 (patch)
tree88b06dee70427650ea608a02b752a4342ca46c11 /load.go
parentb7ebd1bc4104df39062ddf264cf439fcdcac3881 (diff)
read and verify the version
Diffstat (limited to 'load.go')
-rw-r--r--load.go35
1 files changed, 30 insertions, 5 deletions
diff --git a/load.go b/load.go
index 93bd19a..dba0bf1 100644
--- a/load.go
+++ b/load.go
@@ -73,19 +73,44 @@ func ConfigLoad(pb proto.Message, argname string, protoname string) error {
func Load(pb proto.Message) error {
fullname, err := GetFilename(pb)
if err != nil {
- log.Info("filename =", fullname, err)
+ log.Info("'Filename' is not in: =", fullname, err)
return err
}
+ ver, err := GetString(pb, "version")
+ if err != nil {
+ log.Info("'Version' is not in: =", fullname, err)
+ return err
+ }
+ var worked bool
if strings.HasSuffix(fullname, ".text") {
- return loadTEXT(pb, fullname)
+ if err := loadTEXT(pb, fullname); err != nil {
+ return err
+ }
+ worked = true
}
if strings.HasSuffix(fullname, ".json") {
- return loadJSON(pb, fullname)
+ if err := loadJSON(pb, fullname); err != nil {
+ return err
+ }
+ worked = true
}
if strings.HasSuffix(fullname, ".pb") {
- return loadPB(pb, fullname)
+ if err := loadPB(pb, fullname); err != nil {
+ return err
+ }
+ worked = true
}
- return log.Errorf("unknown filetype %s", fullname)
+ if !worked {
+ return log.Errorf("unknown filetype %s", fullname)
+ }
+ newver, _ := GetString(pb, "version")
+ if ver != newver {
+ log.Printf("VERSION '%s' != '%s'\n", ver, newver)
+ log.Info("Your protobuf file is old and can not be loaded")
+ log.Info("You must delete or convert the file", fullname)
+ panic("protobuf version mismatch")
+ }
+ return nil
}
func LoadFile(pb proto.Message, fullname string) error {