Skip to content

net/http/httptest: http.Get succeed after Server.Close #12781

@carter2000

Description

@carter2000

After close a httptest.Server, the following request should failed, but sometimes it succeed.
example code: https://play.golang.org/p/IFv6BKjRgt
more simple one: https://play.golang.org/p/FcpbVEf_HI (detect deadlock on play.golang.org, but hit "unexpected get succeed" on my server)
go version: go version go1.5.1 linux/amd64

package main

import (
    "fmt"
    "net/http"
    "net/http/httptest"
)

func main() {

    var i int
    for {
        i++
        fmt.Println(i)
        ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        }))
        resp, err := http.Get(ts.URL)
        if err != nil {
            fmt.Println("unexpected get failed", err)
            break
        }
        resp.Body.Close()

        ts.Close()

        resp, err = http.Get(ts.URL)
        if err == nil {
            resp.Body.Close()
            fmt.Println("unexpected get succeed")
            break
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions