Skip to content

Commit

Permalink
Merge pull request #122 from wneessen/121-using-defer-inside-for-loop…
Browse files Browse the repository at this point in the history
…-could-lead-to-leaks

Remove defer from for loops
  • Loading branch information
wneessen authored Mar 15, 2023
2 parents cb9bec4 + 13d0add commit 89fd5df
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions smtp/smtp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -808,13 +808,7 @@ func TestHello(t *testing.T) {
t.Fatalf("Hello server and client size mismatch")
}

for i := 0; i < len(helloServer); i++ {
server := strings.Join(strings.Split(baseHelloServer+helloServer[i], "\n"), "\r\n")
client := strings.Join(strings.Split(baseHelloClient+helloClient[i], "\n"), "\r\n")
var cmdbuf strings.Builder
bcmdbuf := bufio.NewWriter(&cmdbuf)
var fake faker
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)
tf := func(fake faker, i int) error {
c, err := NewClient(fake, "fake.host")
if err != nil {
t.Fatalf("NewClient: %v", err)
Expand Down Expand Up @@ -871,6 +865,20 @@ func TestHello(t *testing.T) {
if err != nil {
t.Errorf("Command %d failed: %v", i, err)
}
return nil
}

for i := 0; i < len(helloServer); i++ {
server := strings.Join(strings.Split(baseHelloServer+helloServer[i], "\n"), "\r\n")
client := strings.Join(strings.Split(baseHelloClient+helloClient[i], "\n"), "\r\n")
var cmdbuf strings.Builder
bcmdbuf := bufio.NewWriter(&cmdbuf)
var fake faker
fake.ReadWriter = bufio.NewReadWriter(bufio.NewReader(strings.NewReader(server)), bcmdbuf)

if err := tf(fake, i); err != nil {
t.Error(err)
}

if err := bcmdbuf.Flush(); err != nil {
t.Errorf("flush failed: %s", err)
Expand Down Expand Up @@ -1241,6 +1249,13 @@ func serverHandle(c net.Conn, t *testing.T) error {
send := smtpSender{c}.send
send("220 127.0.0.1 ESMTP service ready")
s := bufio.NewScanner(c)
tf := func(config *tls.Config) error {
c = tls.Server(c, config)
defer func() {
_ = c.Close()
}()
return serverHandleTLS(c, t)
}
for s.Scan() {
switch s.Text() {
case "EHLO localhost":
Expand All @@ -1254,11 +1269,7 @@ func serverHandle(c net.Conn, t *testing.T) error {
return err
}
config := &tls.Config{Certificates: []tls.Certificate{keypair}}
c = tls.Server(c, config)
defer func() {
_ = c.Close()
}()
return serverHandleTLS(c, t)
return tf(config)
default:
t.Fatalf("unrecognized command: %q", s.Text())
}
Expand Down

0 comments on commit 89fd5df

Please sign in to comment.