Dear Gophers,
I would like to bring to your attention. There is an “issue” with the Go standard implementation when handling HTTP requests that are extended by the proxy protocol v1 or v2. While the simple HTTP server works fine with regular requests, it fails when a proxy protocol is added. Example: Simple http server: *package* main *import* ( "*fmt*" "*net/http*" ) *func* hello(*w* http.ResponseWriter, *req* ***http.Request) { fmt.Fprintf(w, "*hello world**\n*") } *func* main() { http.HandleFunc("*/hello*", hello) http.ListenAndServe("*:8080*", *nil*) } The server is working fine when you do something like: curl -kv http://*localhost:8080/hello* But the implementation is failing when you add a proxy protocol (v1) to the tcp request. curl -kv *--*haproxy-protocol http://*localhost:8080/hello* The issue arises because the implementation fails to read the HTTP message, as the message starts with the proxy protocol. Go read request function: https://github.com/golang/go/blob/91c04826723a10f6778a935e743a34de81312489/src/net/http/request.go#L1068 The proxy protocol is widely used, and it would be beneficial for the Go standard implementation to handle such requests. I have previously posted two issues on this topic, but neither has been accepted. I would like to open a discussion on this topic and work towards implementing a solution that could be merged into the Go standard library. Your input and feedback is more than welcome! Thank you all. Github issue links that I posted: net/http: Http Server (request) is not working with enabled Proxy Protocol · Issue #64365 · golang/go (github.com) <https://github.com/golang/go/issues/64365> proposal: net/tspsock: filter/interceptor - concept with default implementation for proxyprotocol (v1/v2) · Issue #65078 · golang/go (github.com) <https://github.com/golang/go/issues/65078> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/6826556b-e73d-4888-b8ef-e6d8ab582da2n%40googlegroups.com.