Set a 10 seconds timeout in Dial
This commit is contained in:
parent
92eaa13340
commit
e4bd87ad6e
9
smtp.go
9
smtp.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// A Dialer is a dialer to an SMTP server.
|
// A Dialer is a dialer to an SMTP server.
|
||||||
|
@ -57,7 +58,7 @@ func NewPlainDialer(host string, port int, username, password string) *Dialer {
|
||||||
// Dial dials and authenticates to an SMTP server. The returned SendCloser
|
// Dial dials and authenticates to an SMTP server. The returned SendCloser
|
||||||
// should be closed when done using it.
|
// should be closed when done using it.
|
||||||
func (d *Dialer) Dial() (SendCloser, error) {
|
func (d *Dialer) Dial() (SendCloser, error) {
|
||||||
conn, err := netDial("tcp", addr(d.Host, d.Port))
|
conn, err := netDialTimeout("tcp", addr(d.Host, d.Port), 10*time.Second)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -181,9 +182,9 @@ func (c *smtpSender) Close() error {
|
||||||
|
|
||||||
// Stubbed out for tests.
|
// Stubbed out for tests.
|
||||||
var (
|
var (
|
||||||
netDial = net.Dial
|
netDialTimeout = net.DialTimeout
|
||||||
tlsClient = tls.Client
|
tlsClient = tls.Client
|
||||||
smtpNewClient = func(conn net.Conn, host string) (smtpClient, error) {
|
smtpNewClient = func(conn net.Conn, host string) (smtpClient, error) {
|
||||||
return smtp.NewClient(conn, host)
|
return smtp.NewClient(conn, host)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -247,7 +248,7 @@ func doTestSendMail(t *testing.T, d *Dialer, want []string, timeout bool) {
|
||||||
timeout: timeout,
|
timeout: timeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
netDial = func(network, address string) (net.Conn, error) {
|
netDialTimeout = func(network, address string, d time.Duration) (net.Conn, error) {
|
||||||
if network != "tcp" {
|
if network != "tcp" {
|
||||||
t.Errorf("Invalid network, got %q, want tcp", network)
|
t.Errorf("Invalid network, got %q, want tcp", network)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue