cloudflare/cloudflared

Public

mirrored from https://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
204d55ecec0005826f8d68bce3ac174d4794cd8a

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

connection/errors.go

81lines · modecode

1package connection
2
3import (
4 "github.com/cloudflare/cloudflared/edgediscovery"
5 "github.com/cloudflare/cloudflared/h2mux"
6 tunnelpogs "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
7)
8
9const (
10 DuplicateConnectionError = "EDUPCONN"
11)
12
13type DupConnRegisterTunnelError struct{}
14
15var errDuplicationConnection = DupConnRegisterTunnelError{}
16
17func (e DupConnRegisterTunnelError) Error() string {
18 return "already connected to this server, trying another address"
19}
20
21// Dial to edge server with quic failed
22type EdgeQuicDialError struct {
23 Cause error
24}
25
26func (e *EdgeQuicDialError) Error() string {
27 return "failed to dial to edge with quic: " + e.Cause.Error()
28}
29
30func (e *EdgeQuicDialError) Unwrap() error {
31 return e.Cause
32}
33
34// RegisterTunnel error from server
35type ServerRegisterTunnelError struct {
36 Cause error
37 Permanent bool
38}
39
40func (e ServerRegisterTunnelError) Error() string {
41 return e.Cause.Error()
42}
43
44func serverRegistrationErrorFromRPC(err error) ServerRegisterTunnelError {
45 if retryable, ok := err.(*tunnelpogs.RetryableError); ok {
46 return ServerRegisterTunnelError{
47 Cause: retryable.Unwrap(),
48 Permanent: false,
49 }
50 }
51 return ServerRegisterTunnelError{
52 Cause: err,
53 Permanent: true,
54 }
55}
56
57type muxerShutdownError struct{}
58
59func (e muxerShutdownError) Error() string {
60 return "muxer shutdown"
61}
62
63var errMuxerStopped = muxerShutdownError{}
64
65func isHandshakeErrRecoverable(err error, connIndex uint8, observer *Observer) bool {
66 log := observer.log.With().
67 Uint8(LogFieldConnIndex, connIndex).
68 Err(err).
69 Logger()
70
71 switch err.(type) {
72 case edgediscovery.DialError:
73 log.Error().Msg("Connection unable to dial edge")
74 case h2mux.MuxerHandshakeError:
75 log.Error().Msg("Connection handshake with edge server failed")
76 default:
77 log.Error().Msg("Connection failed")
78 return false
79 }
80 return true
81}
82