Different fixes
This commit is contained in:
parent
4c45ad3e67
commit
67d535362f
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user