Skip to content

Commit

Permalink
fix(dealer): make net.Dialer not to bind to reuse ephimeral ports
Browse files Browse the repository at this point in the history
  • Loading branch information
dkropachev committed May 30, 2024
1 parent 7f7905d commit 3b430ef
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions scylla.go
Original file line number Diff line number Diff line change
Expand Up @@ -780,14 +780,16 @@ type ScyllaShardAwareDialer struct {
net.Dialer
}

func (d *ScyllaShardAwareDialer) DialContext(ctx context.Context, network, addr string) (net.Conn, error) {
func (d *ScyllaShardAwareDialer) DialContext(ctx context.Context, network, addr string) (conn net.Conn, err error) {
sourcePort := ScyllaGetSourcePort(ctx)
localAddr, err := net.ResolveTCPAddr(network, fmt.Sprintf(":%d", sourcePort))
if sourcePort == 0 {
return d.Dialer.DialContext(ctx, network, addr)
}
dialerWithLocalAddr := d.Dialer
dialerWithLocalAddr.LocalAddr, err = net.ResolveTCPAddr(network, fmt.Sprintf(":%d", sourcePort))
if err != nil {
return nil, err
}
var dialerWithLocalAddr net.Dialer = d.Dialer
dialerWithLocalAddr.LocalAddr = localAddr

return dialerWithLocalAddr.DialContext(ctx, network, addr)
}
Expand Down

0 comments on commit 3b430ef

Please sign in to comment.