chiark / gitweb /
site: Remove pointless check from decrypt_msg0
[secnet.git] / site.c
diff --git a/site.c b/site.c
index 05206f6531db344f533b1bea54f489fc89c28416..4d3a6125bfed91a8956cbc3b3c3ebd608e8f95bc 100644 (file)
--- a/site.c
+++ b/site.c
@@ -709,26 +709,31 @@ static bool_t process_msg6(struct site *st, struct buffer_if *msg6,
     return True;
 }
 
+static bool_t decrypt_msg0(struct site *st, struct buffer_if *msg0)
+{
+    cstring_t transform_err;
+    struct msg0 m;
+    uint32_t problem;
+
+    if (!unpick_msg0(st,msg0,&m)) return False;
+
+    problem = st->current_transform->reverse(st->current_transform->st,
+                                            msg0,&transform_err);
+    if (!problem) return True;
+
+    slog(st,LOG_SEC,"transform: %s",transform_err);
+    initiate_key_setup(st,"incoming message would not decrypt");
+    return False;
+}
+
 static bool_t process_msg0(struct site *st, struct buffer_if *msg0,
                           const struct comm_addr *src)
 {
-    struct msg0 m;
-    cstring_t transform_err;
     uint32_t type;
 
-    if (!st->current_valid) {
-       slog(st,LOG_DROP,"incoming message but no current key -> dropping");
-       return initiate_key_setup(st,"incoming message but no current key");
-    }
-
-    if (!unpick_msg0(st,msg0,&m)) return False;
+    if (!decrypt_msg0(st,msg0))
+       return False;
 
-    if (st->current_transform->reverse(st->current_transform->st,
-                                      msg0,&transform_err)) {
-       /* There's a problem */
-       slog(st,LOG_SEC,"transform: %s",transform_err);
-       return initiate_key_setup(st,"incoming message would not decrypt");
-    }
     CHECK_AVAIL(msg0,4);
     type=buf_unprepend_uint32(msg0);
     switch(type) {