Merge pull request #122 from wneessen/121-using-defer-inside-for-loop-could-lead-to-leaks

Remove defer from for loops
This commit is contained in:
Winni Neessen 2023-03-15 18:51:58 +01:00 committed by GitHub
commit 89fd5dfa06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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)
@ -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)
@ -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":
@ -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())
}