diff --git a/client/helpers/messageHelper.go b/client/helpers/messageHelper.go index 1bd24bf..d40a262 100644 --- a/client/helpers/messageHelper.go +++ b/client/helpers/messageHelper.go @@ -15,13 +15,23 @@ func PackMessageForServer(packedMsg *meowlib.PackedUserMessage, srvuid string) ( // Get the message server srv, err := client.GetConfig().GetIdentity().MessageServers.LoadServer(srvuid) if err != nil { - return nil, "messageBuildPostprocess : LoadServer", err + return nil, "PackMessageForServer : LoadServer", err + } + // Fetch and persist the server public key if it was never stored + // (servers added via invitation finalization only have a UserKp, no PublicKey) + if srv.PublicKey == "" { + srvdata, err := meowlib.HttpGetId(srv.Url) + if err != nil { + return nil, "PackMessageForServer : HttpGetId", err + } + srv.PublicKey = srvdata["publicKey"] + client.GetConfig().GetIdentity().MessageServers.StoreServer(srv) } // Creating Server message for transporting the user message toServerMessage := srv.BuildToServerMessageFromUserMessage(packedMsg) data, err := srv.ProcessOutboundMessage(toServerMessage) if err != nil { - return nil, "messageBuildPostprocess : ProcessOutboundMessage", err + return nil, "PackMessageForServer : ProcessOutboundMessage", err } return data, "", nil