]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.9] net/smtp: NewClient: set tls field to true when already using...
authorJeff <jeffreyh192@gmail.com>
Thu, 5 Oct 2017 17:11:17 +0000 (10:11 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 25 Oct 2017 20:23:22 +0000 (20:23 +0000)
Change-Id: I34008f56c191df0edcaafc20d569bbc6184f89fc
Reviewed-on: https://go-review.googlesource.com/68470
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-on: https://go-review.googlesource.com/70982
Run-TryBot: Russ Cox <rsc@golang.org>

src/net/smtp/smtp.go
src/net/smtp/smtp_test.go

index 28472e447b5e301fa3635824eb68c49e0ad3acd3..767b077fe0893ac6454bf706ce6b2ea1c3190d64 100644 (file)
@@ -67,6 +67,7 @@ func NewClient(conn net.Conn, host string) (*Client, error) {
                return nil, err
        }
        c := &Client{Text: text, conn: conn, serverName: host, localName: "localhost"}
+       _, c.tls = conn.(*tls.Conn)
        return c, nil
 }
 
index ff6585e69b3589b8baa86bf7773286e5ab108cac..606a715ce490a3e14f31669ad8cb1f4116f67a65 100644 (file)
@@ -364,6 +364,53 @@ HELO localhost
 QUIT
 `
 
+func TestNewClientWithTLS(t *testing.T) {
+       cert, err := tls.X509KeyPair(localhostCert, localhostKey)
+       if err != nil {
+               t.Fatalf("loadcert: %v", err)
+       }
+
+       config := tls.Config{Certificates: []tls.Certificate{cert}}
+
+       ln, err := tls.Listen("tcp", "127.0.0.1:0", &config)
+       if err != nil {
+               ln, err = tls.Listen("tcp", "[::1]:0", &config)
+               if err != nil {
+                       t.Fatalf("server: listen: %s", err)
+               }
+       }
+
+       go func() {
+               conn, err := ln.Accept()
+               if err != nil {
+                       t.Fatalf("server: accept: %s", err)
+                       return
+               }
+               defer conn.Close()
+
+               _, err = conn.Write([]byte("220 SIGNS\r\n"))
+               if err != nil {
+                       t.Fatalf("server: write: %s", err)
+                       return
+               }
+       }()
+
+       config.InsecureSkipVerify = true
+       conn, err := tls.Dial("tcp", ln.Addr().String(), &config)
+       if err != nil {
+               t.Fatalf("client: dial: %s", err)
+       }
+       defer conn.Close()
+
+       client, err := NewClient(conn, ln.Addr().String())
+       if err != nil {
+               t.Fatalf("smtp: newclient: %s", err)
+       }
+       if !client.tls {
+               t.Errorf("client.tls Got: %t Expected: %t", client.tls, true)
+       }
+}
+
 func TestHello(t *testing.T) {
 
        if len(helloServer) != len(helloClient) {