diff --git a/api/client.go b/api/client.go index b3ada9ef37b93381b7447443cd5cadea506166b3..7901d1fef5d4d30f8a265d50e145dbad36fe0c65 100644 --- a/api/client.go +++ b/api/client.go @@ -164,11 +164,11 @@ func (cl *Client) Login(password string) (*id.ID, error) { // TODO: FIX ME // While the old session is still valid, we are using the LocA storage to initialize the session locA, _ := cl.storage.GetLocation() - newSession, err := storage.Init(locA, password) + io.SessionV2, err = storage.Init(locA, password) if err != nil { return nil, errors.Wrap(err, "Login: could not initialize v2 storage") } - cl.sessionV2 = newSession + cl.sessionV2 = io.SessionV2 newRm, err := io.NewReceptionManager(cl.rekeyChan, cl.session.GetCurrentUser().User, rsa.CreatePrivateKeyPem(cl.session.GetRSAPrivateKey()), diff --git a/api/client_test.go b/api/client_test.go index f7419f0f96a28126d5a0d2e4bbd10a922625a245..190efcefc6096cd7dbf4b7e3085418a0eb546a0a 100644 --- a/api/client_test.go +++ b/api/client_test.go @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// Copyright © 2019 Privategrity Corporation / +// Copyright © 2020 Privategrity Corporation / // / // All rights reserved. / //////////////////////////////////////////////////////////////////////////////// @@ -588,7 +588,7 @@ func TestClient_LogoutHappyPath(t *testing.T) { t.Errorf("Could not generate Keys: %+v", err) } - //Start Message reciever + //Start Message receiver callBack := func(err error) { t.Log(err) } diff --git a/api/mockserver_test.go b/api/mockserver_test.go index 1c556c796c8a0bfab4fd032827f1f4e48bfbcc46..dd965339190ffd88e468fad5c0a04c3fdef36c0d 100644 --- a/api/mockserver_test.go +++ b/api/mockserver_test.go @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// Copyright © 2019 Privategrity Corporation / +// Copyright © 2020 Privategrity Corporation / // / // All rights reserved. / //////////////////////////////////////////////////////////////////////////////// @@ -41,7 +41,7 @@ var ErrorDef *ndf.NetworkDefinition const ValidRegCode = "WTROXJ33" const InvalidRegCode = "INVALID_REG_CODE_" -var RegGWHandlers [3]*GatewayHandler = [NumGWs]*GatewayHandler{ +var RegGWHandlers = [NumGWs]*GatewayHandler{ {LastReceivedMessage: pb.Slot{}}, {LastReceivedMessage: pb.Slot{}}, {LastReceivedMessage: pb.Slot{}}, @@ -58,7 +58,6 @@ func TestMain(m *testing.M) { // Set logging params jww.SetLogThreshold(jww.LevelTrace) jww.SetStdoutThreshold(jww.LevelTrace) - os.Exit(testMainWrapper(m)) } diff --git a/io/receive.go b/io/receive.go index ef5c5dbcba7c66037efa0d67935e762916c3cd07..6c6e5bd9dc4a445208db5bb34b4f992778062b02 100644 --- a/io/receive.go +++ b/io/receive.go @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// Copyright © 2019 Privategrity Corporation / +// Copyright © 2020 Privategrity Corporation / // / // All rights reserved. / //////////////////////////////////////////////////////////////////////////////// @@ -13,6 +13,7 @@ import ( "gitlab.com/elixxir/client/crypto" "gitlab.com/elixxir/client/globals" "gitlab.com/elixxir/client/parse" + "gitlab.com/elixxir/client/storage" "gitlab.com/elixxir/client/user" pb "gitlab.com/elixxir/comms/mixmessages" "gitlab.com/elixxir/crypto/e2e" @@ -26,6 +27,9 @@ import ( const reportDuration = 30 * time.Second +// TODO: REMOVE ME DEAR GOD +var SessionV2 *storage.Session + var errE2ENotFound = errors.New("E2EKey for matching fingerprint not found, can't process message") // MessageReceiver is a polling thread for receiving messages @@ -39,7 +43,6 @@ func (rm *ReceptionManager) MessageReceiver(session user.Session, delay time.Dur UserID: session.GetCurrentUser().User.Bytes(), } quit := session.GetQuitChan() - NumChecks := 0 NumMessages := 0 @@ -170,7 +173,11 @@ func handleE2EReceiving(session user.Session, func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session, pollingMessage *pb.ClientRequest, receiveGateway *connect.Host) ([]*format.Message, error) { // Get the last message ID received - pollingMessage.LastMessageID = session.GetLastMessageID() + var err error + pollingMessage.LastMessageID, err = SessionV2.GetLastMessageId() + if err != nil { + return nil, err + } // FIXME: dont do this over an over // Gets a list of mssages that are newer than the last one recieved @@ -231,7 +238,7 @@ func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session, } } } - // record that the messages were recieved so they are not re-retrieved + // record that the messages were received so they are not re-retrieved if bufLoc > 0 { for i := 0; i < bufLoc; i++ { globals.Log.INFO.Printf( @@ -240,7 +247,10 @@ func (rm *ReceptionManager) receiveMessagesFromGateway(session user.Session, rm.receivedMessages[mIDs[i]] = struct{}{} rm.recievedMesageLock.Unlock() } - session.SetLastMessageID(mIDs[bufLoc-1]) + err = SessionV2.SetLastMessageId(mIDs[bufLoc-1]) + if err != nil { + return nil, err + } err = session.StoreSession() if err != nil { globals.Log.ERROR.Printf("Could not store session "+ diff --git a/storage/session.go b/storage/session.go index 0b95c7442fba4cfe1b8774f56beba505110edc8b..a264a37f4a571b8e811b23df917486f788d9c32e 100644 --- a/storage/session.go +++ b/storage/session.go @@ -6,7 +6,10 @@ package storage -import "gitlab.com/elixxir/ekv" +import ( + "gitlab.com/elixxir/ekv" + "time" +) type Session struct { kv *VersionedKV @@ -39,6 +42,14 @@ func (s *Session) GetLastMessageId() (string, error) { } // Set the LastMessageID in the Session -func (s *Session) SetLastMessageId(object *VersionedObject) error { - return s.kv.Set("LastMessageID", object) +func (s *Session) SetLastMessageId(id string) error { + ts, err := time.Now().MarshalText() + if err != nil { + return err + } + vo := &VersionedObject{ + Timestamp: ts, + Data: []byte(id), + } + return s.kv.Set("LastMessageID", vo) } diff --git a/storage/session_test.go b/storage/session_test.go index ac4bbc6d4e8b40f597339991e8ef96dd89e69088..01d50f5c04822c1a59fa9e7bfc32847d80cd04ba 100644 --- a/storage/session_test.go +++ b/storage/session_test.go @@ -64,15 +64,7 @@ func TestSession_GetSetLastMessageId(t *testing.T) { t.Errorf("failed to init: %+v", err) } - ts, err := time.Now().MarshalText() - if err != nil { - t.Errorf("Failed to martial time for object") - } - err = s.SetLastMessageId(&VersionedObject{ - Version: 0, - Timestamp: ts, - Data: []byte(testId), - }) + err = s.SetLastMessageId(testId) if err != nil { t.Errorf("Failed to set LastMessageId: %+v", err) }