Different fixes

This commit is contained in:
mcrakhman 2023-06-06 17:18:59 +02:00
parent 4c45ad3e67
commit 67d535362f
No known key found for this signature in database
GPG Key ID: DED12CFEF5B8396B
7 changed files with 25 additions and 20 deletions

View File

@ -92,7 +92,7 @@ func (s *syncTreeHandler) handleMessage(ctx context.Context, senderId string) (e
case content.GetHeadUpdate() != nil: case content.GetHeadUpdate() != nil:
var syncReq *treechangeproto.TreeSyncMessage var syncReq *treechangeproto.TreeSyncMessage
syncReq, err = s.syncProtocol.HeadUpdate(ctx, senderId, content.GetHeadUpdate()) syncReq, err = s.syncProtocol.HeadUpdate(ctx, senderId, content.GetHeadUpdate())
if err != nil { if err != nil || syncReq == nil {
return return
} }
return s.syncClient.QueueRequest(senderId, treeId, syncReq) return s.syncClient.QueueRequest(senderId, treeId, syncReq)

View File

@ -214,14 +214,15 @@ func validateSpaceStorageCreatePayload(payload spacestorage.SpaceStorageCreatePa
} }
func ValidateSpaceHeader(rawHeaderWithId *spacesyncproto.RawSpaceHeaderWithId, identity crypto.PubKey) (err error) { func ValidateSpaceHeader(rawHeaderWithId *spacesyncproto.RawSpaceHeaderWithId, identity crypto.PubKey) (err error) {
if rawHeaderWithId == nil {
return spacestorage.ErrIncorrectSpaceHeader
}
sepIdx := strings.Index(rawHeaderWithId.Id, ".") sepIdx := strings.Index(rawHeaderWithId.Id, ".")
if sepIdx == -1 { if sepIdx == -1 {
err = spacestorage.ErrIncorrectSpaceHeader return spacestorage.ErrIncorrectSpaceHeader
return
} }
if !cidutil.VerifyCid(rawHeaderWithId.RawHeader, rawHeaderWithId.Id[:sepIdx]) { if !cidutil.VerifyCid(rawHeaderWithId.RawHeader, rawHeaderWithId.Id[:sepIdx]) {
err = objecttree.ErrIncorrectCid return objecttree.ErrIncorrectCid
return
} }
var rawSpaceHeader spacesyncproto.RawSpaceHeader var rawSpaceHeader spacesyncproto.RawSpaceHeader
err = proto.Unmarshal(rawHeaderWithId.RawHeader, &rawSpaceHeader) err = proto.Unmarshal(rawHeaderWithId.RawHeader, &rawSpaceHeader)
@ -239,19 +240,16 @@ func ValidateSpaceHeader(rawHeaderWithId *spacesyncproto.RawSpaceHeaderWithId, i
} }
res, err := payloadIdentity.Verify(rawSpaceHeader.SpaceHeader, rawSpaceHeader.Signature) res, err := payloadIdentity.Verify(rawSpaceHeader.SpaceHeader, rawSpaceHeader.Signature)
if err != nil || !res { if err != nil || !res {
err = spacestorage.ErrIncorrectSpaceHeader return spacestorage.ErrIncorrectSpaceHeader
return
} }
if rawHeaderWithId.Id[sepIdx+1:] != strconv.FormatUint(header.ReplicationKey, 36) { if rawHeaderWithId.Id[sepIdx+1:] != strconv.FormatUint(header.ReplicationKey, 36) {
err = spacestorage.ErrIncorrectSpaceHeader return spacestorage.ErrIncorrectSpaceHeader
return
} }
if identity == nil { if identity == nil {
return return
} }
if !payloadIdentity.Equals(identity) { if !payloadIdentity.Equals(identity) {
err = ErrIncorrectIdentity return ErrIncorrectIdentity
return
} }
return return
} }

View File

@ -82,8 +82,9 @@ func (r *requestManager) QueueRequest(peerId string, req *spacesyncproto.ObjectS
defer r.Unlock() defer r.Unlock()
pl, exists := r.pools[peerId] pl, exists := r.pools[peerId]
if !exists { if !exists {
pl := streampool.NewExecPool(r.workers, r.queueSize) pl = streampool.NewExecPool(r.workers, r.queueSize)
r.pools[peerId] = pl r.pools[peerId] = pl
pl.Run()
} }
// TODO: for later think when many clients are there, // TODO: for later think when many clients are there,
// we need to close pools for inactive clients // we need to close pools for inactive clients

View File

@ -169,7 +169,8 @@ func (s *space) Init(ctx context.Context) (err error) {
s.objectSync = s.app.MustComponent(objectsync.CName).(objectsync.ObjectSync) s.objectSync = s.app.MustComponent(objectsync.CName).(objectsync.ObjectSync)
s.storage = s.app.MustComponent(spacestorage.CName).(spacestorage.SpaceStorage) s.storage = s.app.MustComponent(spacestorage.CName).(spacestorage.SpaceStorage)
s.aclList = s.app.MustComponent(syncacl.CName).(list.AclList) s.aclList = s.app.MustComponent(syncacl.CName).(list.AclList)
return nil s.header, err = s.storage.SpaceHeader()
return
} }
func (s *space) SyncStatus() syncstatus.StatusUpdater { func (s *space) SyncStatus() syncstatus.StatusUpdater {

View File

@ -1,6 +1,7 @@
package spacestorage package spacestorage
import ( import (
"context"
"github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/app"
"github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto"
"github.com/anyproto/any-sync/commonspace/object/acl/liststorage" "github.com/anyproto/any-sync/commonspace/object/acl/liststorage"
@ -22,6 +23,14 @@ type InMemorySpaceStorage struct {
sync.Mutex sync.Mutex
} }
func (i *InMemorySpaceStorage) Run(ctx context.Context) (err error) {
return nil
}
func (i *InMemorySpaceStorage) Close(ctx context.Context) (err error) {
return nil
}
func (i *InMemorySpaceStorage) Init(a *app.App) (err error) { func (i *InMemorySpaceStorage) Init(a *app.App) (err error) {
return nil return nil
} }
@ -157,10 +166,6 @@ func (i *InMemorySpaceStorage) ReadSpaceHash() (hash string, err error) {
return i.spaceHash, nil return i.spaceHash, nil
} }
func (i *InMemorySpaceStorage) Close() error {
return nil
}
func (i *InMemorySpaceStorage) AllTrees() map[string]treestorage.TreeStorage { func (i *InMemorySpaceStorage) AllTrees() map[string]treestorage.TreeStorage {
i.Lock() i.Lock()
defer i.Unlock() defer i.Unlock()

View File

@ -28,7 +28,7 @@ const (
) )
type SpaceStorage interface { type SpaceStorage interface {
app.Component app.ComponentRunnable
Id() string Id() string
SetSpaceDeleted() error SetSpaceDeleted() error
IsSpaceDeleted() (bool, error) IsSpaceDeleted() (bool, error)
@ -44,8 +44,6 @@ type SpaceStorage interface {
CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (treestorage.TreeStorage, error) CreateTreeStorage(payload treestorage.TreeStorageCreatePayload) (treestorage.TreeStorage, error)
WriteSpaceHash(hash string) error WriteSpaceHash(hash string) error
ReadSpaceHash() (hash string, err error) ReadSpaceHash() (hash string, err error)
Close() error
} }
type SpaceStorageCreatePayload struct { type SpaceStorageCreatePayload struct {

View File

@ -250,6 +250,8 @@ func (s *streamPool) openStream(ctx context.Context, p peer.Peer) *openingProces
close(op.ch) close(op.ch)
delete(s.opening, p.Id()) delete(s.opening, p.Id())
}() }()
// in case there was no peerId in context
ctx := peer.CtxWithPeerId(ctx, p.Id())
// open new stream and add to pool // open new stream and add to pool
st, tags, err := s.handler.OpenStream(ctx, p) st, tags, err := s.handler.OpenStream(ctx, p)
if err != nil { if err != nil {