fix: move everything using endian to uint64

This commit is contained in:
Derrick Hammer 2024-01-10 11:00:01 -05:00
parent f9a0bd863c
commit 19fb3b9967
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
6 changed files with 44 additions and 26 deletions

View File

@ -21,7 +21,7 @@ type CID struct {
Multibase
Type types.CIDType
Hash Multihash
Size uint32
Size uint64
}
var _ json.Marshaler = (*CID)(nil)
@ -29,7 +29,7 @@ var _ json.Unmarshaler = (*CID)(nil)
var _ msgpack.CustomEncoder = (*CID)(nil)
var _ msgpack.CustomDecoder = (*CID)(nil)
func NewCID(Type types.CIDType, Hash Multihash, Size uint32) *CID {
func NewCID(Type types.CIDType, Hash Multihash, Size uint64) *CID {
c := &CID{
Type: Type,
Hash: Hash,
@ -104,7 +104,7 @@ func CIDFromBytes(bytes []byte) (*CID, error) {
return initCID(bytes)
}
func CIDFromHash(bytes interface{}, size uint32, cidType types.CIDType) (*CID, error) {
func CIDFromHash(bytes interface{}, size uint64, cidType types.CIDType) (*CID, error) {
var (
byteSlice []byte
err error
@ -151,7 +151,7 @@ func CIDVerify(bytes interface{}) bool {
return err == nil
}
func (cid *CID) CopyWith(newType int, newSize uint32) (*CID, error) {
func (cid *CID) CopyWith(newType int, newSize uint64) (*CID, error) {
if newType == 0 {
newType = int(cid.Type)
}
@ -282,7 +282,7 @@ func initCID(bytes []byte) (*CID, error) {
hashBytes := bytes[1:34]
hash := NewMultihash(hashBytes)
var size uint32
var size uint64
if len(bytes) > 34 {
sizeBytes := bytes[34:]
sizeValue := utils.DecodeEndian(sizeBytes)

View File

@ -13,7 +13,7 @@ type EncryptedCID struct {
encryptedBlobHash Multihash
OriginalCID CID
encryptionAlgorithm byte
padding uint32
padding uint64
chunkSizeAsPowerOf2 int
encryptionKey []byte
}
@ -23,7 +23,7 @@ var _ msgpack.CustomDecoder = (*EncryptedCID)(nil)
var _ json.Marshaler = (*EncryptedCID)(nil)
var _ json.Unmarshaler = (*EncryptedCID)(nil)
func NewEncryptedCID(encryptedBlobHash Multihash, originalCID CID, encryptionKey []byte, padding uint32, chunkSizeAsPowerOf2 int, encryptionAlgorithm byte) *EncryptedCID {
func NewEncryptedCID(encryptedBlobHash Multihash, originalCID CID, encryptionKey []byte, padding uint64, chunkSizeAsPowerOf2 int, encryptionAlgorithm byte) *EncryptedCID {
e := &EncryptedCID{
encryptedBlobHash: encryptedBlobHash,
OriginalCID: originalCID,

View File

@ -109,7 +109,7 @@ func MarshalRegistryEntry(data []byte, revision uint64) []byte {
var buffer []byte
buffer = append(buffer, byte(types.RecordTypeRegistryEntry))
revBytes := utils.EncodeEndian(uint32(revision), 8)
revBytes := utils.EncodeEndian(revision, 8)
buffer = append(buffer, revBytes...)
buffer = append(buffer, byte(len(data)))

View File

@ -70,7 +70,7 @@ func (h *HTTPImpl) p2pHandler(ctx jape.Context) {
return
}
go func() {
err := h.node.Services().P2P().OnNewPeer(peer, true)
err := h.node.Services().P2P().OnNewPeer(peer, false)
if err != nil {
h.node.Logger().Error("error handling new peer", zap.Error(err))
}

View File

@ -248,7 +248,14 @@ func (p *P2PImpl) ConnectToNode(connectionUris []*url.URL, retried bool) error {
func (p *P2PImpl) OnNewPeer(peer net.Peer, verifyId bool) error {
var wg sync.WaitGroup
pid, _ := peer.Id().ToString()
var pid string
if peer.Id() != nil {
pid, _ = peer.Id().ToString()
} else {
pid = "unknown"
}
p.logger.Debug("OnNewPeer started", zap.String("peer", pid))
challenge := protocol.GenerateChallenge()
@ -277,18 +284,29 @@ func (p *P2PImpl) OnNewPeer(peer net.Peer, verifyId bool) error {
return nil
}
func (p *P2PImpl) OnNewPeerListen(peer net.Peer, verifyId bool) {
peerId, err := peer.Id().ToString()
if err != nil {
p.logger.Error("failed to get peer id", zap.Error(err))
return
var pid string
if peer.Id() != nil {
pid, _ = peer.Id().ToString()
} else {
pid = "unknown"
}
onDone := net.CloseCallback(func() {
// Handle closure of the connection
if p.peers.Contains(peerId) {
p.peers.Remove(peerId)
}
if p.peersPending.Contains(peerId) {
p.peersPending.Remove(peerId)
if peer.Id() != nil {
pid, err := peer.Id().ToString()
if err != nil {
p.logger.Error("failed to get peer id", zap.Error(err))
return
}
// Handle closure of the connection
if p.peers.Contains(pid) {
p.peers.Remove(pid)
}
if p.peersPending.Contains(pid) {
p.peersPending.Remove(pid)
}
}
})
@ -300,7 +318,7 @@ func (p *P2PImpl) OnNewPeerListen(peer net.Peer, verifyId bool) {
imsg := base.NewIncomingMessageUnknown()
err := msgpack.Unmarshal(message, imsg)
p.logger.Debug("ListenForMessages", zap.Any("message", imsg), zap.String("peer", peerId))
p.logger.Debug("ListenForMessages", zap.Any("message", imsg), zap.String("peer", pid))
if err != nil {
return err
}

View File

@ -2,15 +2,15 @@ package utils
import "encoding/binary"
func EncodeEndian(value uint32, length int) []byte {
func EncodeEndian(value uint64, length int) []byte {
byteSlice := make([]byte, length)
binary.LittleEndian.PutUint32(byteSlice, value)
binary.LittleEndian.PutUint64(byteSlice, value)
return byteSlice
}
func DecodeEndian(byteSlice []byte) uint32 {
buffer := make([]byte, 4)
func DecodeEndian(byteSlice []byte) uint64 {
buffer := make([]byte, 8)
copy(buffer, byteSlice)
return binary.LittleEndian.Uint32(buffer)
return binary.LittleEndian.Uint64(buffer)
}