insert key into store only if it does not exist
[epoint] / pkg / server / server.go
index 614c256..9822a64 100644 (file)
@@ -52,22 +52,27 @@ func AddKeys(d []byte) (err error) {
        }
        for _, e := range entities {
                // TODO: various checks..
+               // TODO: collect errors instead of aborting addkeys
                isIssuer, issuer, denom, err1 := key.Check(e)
                err = err1
                if err != nil {
-                       // TODO..
-                       continue
+                       return
                }
                if !isIssuer {
-                       es, err := GetKeys(issuer)
+                       es, err1 := GetKeys(issuer)
+                       err = err1
+                       if err != nil {
+                               return
+                       }
+                       ok, _, den, err1 := key.Check(es[0])
+                       err = err1
                        if err != nil {
-                               // TODO..
-                               continue
+                               // internal error
+                               return
                        }
-                       ok, _, den, err := key.Check(es[0])
-                       if !ok || err != nil || den != denom {
-                               // TODO..
-                               continue
+                       if !ok || den != denom {
+                               err = fmt.Errorf("Issuer key check failed")
+                               return
                        }
                }
                b := new(bytes.Buffer)
@@ -76,7 +81,7 @@ func AddKeys(d []byte) (err error) {
                        return
                }
                fpr := key.Id(e)
-               err = db.Set("key", fpr, b.Bytes())
+               err = db.Insert("key", fpr, b.Bytes())
                if err != nil {
                        return
                }