Skip to content
This repository has been archived by the owner on Jan 7, 2023. It is now read-only.

Commit

Permalink
Merge pull request #26 from oleg-jukovec/openssl-dialtimeout-call
Browse files Browse the repository at this point in the history
Add openssl.DialTimeout(network, addr, timeout, ctx, flags) call
  • Loading branch information
MarcoPolo authored Jun 3, 2022
2 parents 6a218fb + fa2d6fa commit e25825b
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion net.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package openssl
import (
"errors"
"net"
"time"
)

type listener struct {
Expand Down Expand Up @@ -80,6 +81,18 @@ func Dial(network, addr string, ctx *Ctx, flags DialFlags) (*Conn, error) {
return DialSession(network, addr, ctx, flags, nil)
}

// DialTimeout acts like Dial but takes a timeout for network dial.
//
// The timeout includes only network dial. It does not include OpenSSL calls.
//
// See func Dial for a description of the network, addr, ctx and flags
// parameters.
func DialTimeout(network, addr string, timeout time.Duration, ctx *Ctx,
flags DialFlags) (*Conn, error) {
d := net.Dialer {Timeout: timeout}
return dialSession(d, network, addr, ctx, flags, nil)
}

// DialSession will connect to network/address and then wrap the corresponding
// underlying connection with an OpenSSL client connection using context ctx.
// If flags includes InsecureSkipHostVerification, the server certificate's
Expand All @@ -95,7 +108,12 @@ func Dial(network, addr string, ctx *Ctx, flags DialFlags) (*Conn, error) {
// can be retrieved from the GetSession method on the Conn.
func DialSession(network, addr string, ctx *Ctx, flags DialFlags,
session []byte) (*Conn, error) {
var d net.Dialer
return dialSession(d, network, addr, ctx, flags, session);
}

func dialSession(d net.Dialer, network, addr string, ctx *Ctx, flags DialFlags,
session []byte) (*Conn, error) {
host, _, err := net.SplitHostPort(addr)
if err != nil {
return nil, err
Expand All @@ -108,7 +126,8 @@ func DialSession(network, addr string, ctx *Ctx, flags DialFlags,
}
// TODO: use operating system default certificate chain?
}
c, err := net.Dial(network, addr)

c, err := d.Dial(network, addr)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit e25825b

Please sign in to comment.