mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-16 02:56:39 +00:00

* [NOD-1126] Implement block relay flow * [NOD-1126] Implement block relay flow * [NOD-1126] Add StartGetRelayBlocksListener * [NOD-1126] Integrate with new interface * [NOD-1126] Fix comments * [NOD-1126] Refactor protocol.go * [NOD-1126] Split long lines * [NOD-1126] Fix comment * [NOD-1126] move sharedRequestedBlocks to a separate file * [NOD-1126] Fix error message * [NOD-1126] Move handleInv to StartBlockRelay * [NOD-1126] Create hashesQueueSet type * [NOD-1126] Make deleteFromRequestedBlocks a method * [NOD-1126] Fix comment * [NOD-1126] Add block logger * [NOD-1126] Rename advertisedProtoVer->advertisedProtocolVer * [NOD-1126] Fix comment and an error message * [NOD-1126] Remove redundant loop * [NOD-1126] Move requestBlocks upper * [NOD-1126] Remove exiting blocks in requestedBlocks from hashesToRequest * [NOD-1126] Change comment * [NOD-1126] Rename stallResponseTimeout->timeout * [NOD-1126] Use switch inside readMsgBlock * [NOD-1126] Fix error message and remove redundant log * [NOD-1126] Rename pacakge names * [NOD-1126] Fix comment * [NOD-1126] Change file names * [NOD-1126] Convert block to partial if needed * [NOD-1126] Remove function redeclaration * [NOD-1126] continue instead of return * [NOD-1126] Rename LogBlockBlueScore->LogBlock * [NOD-1126] Add minimum functions to utils * [NOD-1126] Flip condition on readInv * [NOD-1126] Rename utilMath->mathUtil * [NOD-1126] Fix comment * [NOD-1137] Implement handshake * [NOD-1137] Replace version's nonce with ID * [NOD-1137] Remove redundant function * [NOD-1137] Move handshake to a separate file * [NOD-1137] Add todo * [NOD-1137] Replace peer internal id with global peer ID * [NOD-1137] Add serializer/deserializer to ID * [NOD-1137] Remove validation from AddUserAgent * [NOD-1137] Add missing id package * [NOD-1137] Rename variables * [NOD-1137] Add comment * [NOD-1137] Implement GetBestLocalAddress * [NOD-1137] Implement TODOs * [NOD-1137] Rename variables * [NOD-1137] Move errors.Is inside err!=nil branch * [NOD-1137] Fix erroneous condition on Dequeue * [NOD-1137] Fix bug in GetReadyPeerIDs * [NOD-1137] Handle external IP on GetBestLocalAddress * [NOD-1137] Remove version and verack message types when handshake is over * [NOD-1137] Add FromBytes to id package * [NOD-1137] Add protocol error * [NOD-1137] Add ErrTimeout * [NOD-1137] Log error only if exists * [NOD-1137] Replace idFromBytes->id.FromBytes * [NOD-1137] Add comments * [NOD-1137] Remove ErrTimeout * [NOD-1137] Unremove ErrTimeout * [NOD-1137] Change comment * [NOD-1137] Use EnqueueWithTimeout everywhere in protocol
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package protocolerrors
|
|
|
|
import "github.com/pkg/errors"
|
|
|
|
// ProtocolError is an error that signifies a violation
|
|
// of the peer-to-peer protocol
|
|
type ProtocolError struct {
|
|
ShouldBan bool
|
|
Cause error
|
|
}
|
|
|
|
func (e *ProtocolError) Error() string {
|
|
return e.Cause.Error()
|
|
}
|
|
|
|
func (e *ProtocolError) Unwrap() error {
|
|
return e.Cause
|
|
}
|
|
|
|
// Errorf formats according to a format specifier and returns the string
|
|
// as a value that satisfies error.
|
|
// Errorf also records the stack trace at the point it was called.
|
|
func Errorf(shouldBan bool, format string, args ...interface{}) error {
|
|
return &ProtocolError{
|
|
ShouldBan: shouldBan,
|
|
Cause: errors.Errorf(format, args...),
|
|
}
|
|
}
|
|
|
|
// New returns an error with the supplied message.
|
|
// New also records the stack trace at the point it was called.
|
|
func New(shouldBan bool, message string) error {
|
|
return &ProtocolError{
|
|
ShouldBan: shouldBan,
|
|
Cause: errors.New(message),
|
|
}
|
|
}
|
|
|
|
// Wrap returns an error annotating err with a stack trace
|
|
// at the point Wrap is called, and the supplied message.
|
|
func Wrap(shouldBan bool, err error, message string) error {
|
|
return &ProtocolError{
|
|
ShouldBan: shouldBan,
|
|
Cause: errors.Wrap(err, message),
|
|
}
|
|
}
|
|
|
|
// Wrapf returns an error annotating err with a stack trace
|
|
// at the point Wrapf is called, and the format specifier.
|
|
func Wrapf(shouldBan bool, err error, format string, args ...interface{}) error {
|
|
return &ProtocolError{
|
|
ShouldBan: shouldBan,
|
|
Cause: errors.Wrapf(err, format, args...),
|
|
}
|
|
}
|