errors.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package quic
  2. import (
  3. "fmt"
  4. "github.com/Psiphon-Labs/quic-go/internal/qerr"
  5. )
  6. type (
  7. TransportError = qerr.TransportError
  8. ApplicationError = qerr.ApplicationError
  9. VersionNegotiationError = qerr.VersionNegotiationError
  10. StatelessResetError = qerr.StatelessResetError
  11. IdleTimeoutError = qerr.IdleTimeoutError
  12. HandshakeTimeoutError = qerr.HandshakeTimeoutError
  13. )
  14. type (
  15. TransportErrorCode = qerr.TransportErrorCode
  16. ApplicationErrorCode = qerr.ApplicationErrorCode
  17. StreamErrorCode = qerr.StreamErrorCode
  18. )
  19. const (
  20. NoError = qerr.NoError
  21. InternalError = qerr.InternalError
  22. ConnectionRefused = qerr.ConnectionRefused
  23. FlowControlError = qerr.FlowControlError
  24. StreamLimitError = qerr.StreamLimitError
  25. StreamStateError = qerr.StreamStateError
  26. FinalSizeError = qerr.FinalSizeError
  27. FrameEncodingError = qerr.FrameEncodingError
  28. TransportParameterError = qerr.TransportParameterError
  29. ConnectionIDLimitError = qerr.ConnectionIDLimitError
  30. ProtocolViolation = qerr.ProtocolViolation
  31. InvalidToken = qerr.InvalidToken
  32. ApplicationErrorErrorCode = qerr.ApplicationErrorErrorCode
  33. CryptoBufferExceeded = qerr.CryptoBufferExceeded
  34. KeyUpdateError = qerr.KeyUpdateError
  35. AEADLimitReached = qerr.AEADLimitReached
  36. NoViablePathError = qerr.NoViablePathError
  37. )
  38. // A StreamError is used for Stream.CancelRead and Stream.CancelWrite.
  39. // It is also returned from Stream.Read and Stream.Write if the peer canceled reading or writing.
  40. type StreamError struct {
  41. StreamID StreamID
  42. ErrorCode StreamErrorCode
  43. Remote bool
  44. }
  45. func (e *StreamError) Is(target error) bool {
  46. _, ok := target.(*StreamError)
  47. return ok
  48. }
  49. func (e *StreamError) Error() string {
  50. pers := "local"
  51. if e.Remote {
  52. pers = "remote"
  53. }
  54. return fmt.Sprintf("stream %d canceled by %s with error code %d", e.StreamID, pers, e.ErrorCode)
  55. }