@@ -16,7 +16,7 @@ import (
1616
1717const bufferSize = 32 * 1024
1818
19- // Service remains the same
19+ // Service holds resources shared across multiple reverse proxy instances
2020type Service struct {
2121 buf * utils.Pool [[]byte ]
2222 log * logger.Logger
@@ -33,48 +33,51 @@ func NewService(log *logger.Logger) *Service {
3333
3434type UpgradeHandler func (http.ResponseWriter , * http.Request , net.Conn , * http.Response )
3535
36- type ConnPool struct {
36+ type connPool struct {
3737 target * url.URL
3838 pool * utils.Pool [net.Conn ]
3939 logger * logger.Logger
4040}
4141
42- func NewConnPool (target * url.URL , logger * logger.Logger ) * ConnPool {
43- return & ConnPool {
42+ func newconnPool (target * url.URL , logger * logger.Logger ) * connPool {
43+ return & connPool {
4444 target : target ,
4545 pool : utils .NewPool (func () net.Conn {
46- //TODO: Is it a good idea to ignore error here?
47- conn , _ := net .Dial ("tcp" , target .Host )
46+ conn , err := net .Dial ("tcp" , target .Host )
47+ if err != nil {
48+ logger .Errorf ("Failed to create connection to %s: %v" , target .Host , err )
49+ return nil
50+ }
4851 return conn
4952 }),
5053 logger : logger .WithComponent ("conn_pool" ),
5154 }
5255}
5356
54- func (p * ConnPool ) Get () (net.Conn , error ) {
57+ func (p * connPool ) Get () (net.Conn , error ) {
5558 conn := p .pool .Get ()
5659 if conn == nil {
5760 return nil , fmt .Errorf ("failed to create connection to %s" , p .target .Host )
5861 }
5962 return conn , nil
6063}
6164
62- func (p * ConnPool ) Put (conn net.Conn ) {
65+ func (p * connPool ) Put (conn net.Conn ) {
6366 p .pool .Put (conn )
6467}
6568
6669type ReverseProxy struct {
6770 logger * logger.Logger
6871 service * Service
69- connPool * ConnPool
72+ connPool * connPool
7073 targetURL * url.URL
7174}
7275
7376func NewReverseProxy (logger * logger.Logger , service * Service , targetURL * url.URL ) * ReverseProxy {
7477 return & ReverseProxy {
7578 logger : logger .WithComponent ("reverse_proxy" ),
7679 service : service ,
77- connPool : NewConnPool (targetURL , logger ),
80+ connPool : newconnPool (targetURL , logger ),
7881 targetURL : targetURL ,
7982 }
8083}
0 commit comments