go/src/net
Hilko Bengen fff236e659 net/http/fcgi: eliminate race, keep request id until end of stdin
There was a race condition that could lead to child.serveRequest
removing the request ID before child.handleRequest had read the empty
FCGI_STDIN message that indicates end-of-stream which in turn could
lead to child.serveRequest blocking while trying to consume the
request body.

Now, we remove the request ID from within child.handleRequest after
the end of stdin has been detected, eliminating the race condition.

Since there are no more concurrent modifications/accesses
to child.requests, we remove the accompanying sync.Mutex.

Change-Id: I80c68e65904a988dfa9e3cceec1829496628ff34
GitHub-Last-Rev: b3976111ae
GitHub-Pull-Request: golang/go#42840
Reviewed-on: https://go-review.googlesource.com/c/go/+/273366
Trust: Damien Neil <dneil@google.com>
Trust: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
2021-04-16 19:34:33 +00:00
..
http net/http/fcgi: eliminate race, keep request id until end of stdin 2021-04-16 19:34:33 +00:00
internal/socktest all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
mail net/mail: don't use MDT in test 2020-12-25 23:54:24 +00:00
rpc reflect: add Method.IsExported and StructField.IsExported methods 2021-02-25 21:21:51 +00:00
smtp net/smtp: adds support for the SMTPUTF8 extension 2020-09-01 23:10:59 +00:00
testdata
textproto all: update references to symbols moved from io/ioutil to io 2020-10-20 18:41:18 +00:00
url net/url: use camelCase names 2021-04-01 05:43:24 +00:00
addrselect.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
addrselect_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_aix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_android.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_bsd.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_linux.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_netbsd.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_openbsd.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_resnew.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_resold.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_socknew.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_sockold.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_solaris.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
cgo_windows.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
conf.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
conf_netcgo.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
conf_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
conn_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
dial.go docs: clarify when APIs use context.Background. 2021-03-11 16:37:38 +00:00
dial_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
dial_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
dnsclient.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
dnsclient_test.go net: remove dependency on math/rand 2020-10-12 16:30:11 +00:00
dnsclient_unix.go net: make go resolver aware of network parameter 2021-03-23 11:14:58 +00:00
dnsclient_unix_test.go net: make go resolver aware of network parameter 2021-03-23 11:14:58 +00:00
dnsconfig_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
dnsconfig_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
dnsname_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_plan9.go
error_plan9_test.go
error_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_posix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
error_windows.go
error_windows_test.go
example_test.go net: add Example for Unix dialer with context 2020-10-21 23:53:08 +00:00
external_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
fd_plan9.go
fd_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
fd_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
fd_windows.go
file.go
file_plan9.go
file_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
file_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
file_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
file_windows.go
hook.go
hook_plan9.go
hook_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
hook_windows.go
hosts.go
hosts_test.go
interface.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
interface_aix.go
interface_bsd.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_bsd_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_bsdvar.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_darwin.go
interface_freebsd.go
interface_linux.go
interface_linux_test.go
interface_plan9.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
interface_solaris.go net: use IFF_* consts from package syscall on solaris 2020-09-17 20:37:53 +00:00
interface_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
interface_windows.go syscall, internal/syscall/windows: remove utf16PtrToString parameter 2020-05-03 07:23:32 +00:00
ip.go net: reference the correct RFCs and sections for IP.IsPrivate 2021-04-11 15:56:20 +00:00
ip_test.go net: add IP.IsPrivate 2021-03-22 21:35:40 +00:00
iprawsock.go
iprawsock_plan9.go
iprawsock_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
iprawsock_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
ipsock.go net: never probe IPv4 map support on DragonFly BSD, OpenBSD 2021-04-12 21:26:59 +00:00
ipsock_plan9.go net: fix (*ipStackCapabilities).probe godoc 2021-04-12 05:11:59 +00:00
ipsock_plan9_test.go net: correct address when listening on IPv4zero tcp4/udp4 on Plan 9 2020-07-07 23:03:29 +00:00
ipsock_posix.go net: fix (*ipStackCapabilities).probe godoc 2021-04-12 05:11:59 +00:00
ipsock_test.go
listen_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
lookup.go docs: clarify when APIs use context.Background. 2021-03-11 16:37:38 +00:00
lookup_fake.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
lookup_plan9.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
lookup_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
lookup_unix.go net: make go resolver aware of network parameter 2021-03-23 11:14:58 +00:00
lookup_windows.go syscall, internal/syscall/windows: remove utf16PtrToString parameter 2020-05-03 07:23:32 +00:00
lookup_windows_test.go
mac.go
mac_test.go
main_cloexec_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_conf_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_noconf_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_plan9_test.go
main_posix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
main_windows_test.go
mockserver_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
net.go net: make ErrClosed and ParseError implement net.Error 2021-04-05 19:15:53 +00:00
net_fake.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
net_test.go net: make ErrClosed and ParseError implement net.Error 2021-04-05 19:15:53 +00:00
net_windows_test.go net: disable Windows netsh tests when netsh won't run 2021-02-19 00:41:41 +00:00
netgo_unix_test.go net: make go resolver aware of network parameter 2021-03-23 11:14:58 +00:00
nss.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
nss_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
packetconn_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
parse.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
parse_test.go
pipe.go os, net: define and use os.ErrDeadlineExceeded 2020-04-25 00:26:48 +00:00
pipe_test.go
platform_test.go all: enable more tests on macOS/ARM64 2020-10-06 21:56:24 +00:00
port.go
port_test.go
port_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
protoconn_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
rawconn.go
rawconn_stub_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
rawconn_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
rawconn_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
rawconn_windows_test.go net: simplify error return in *RawConn test helpers 2020-08-18 08:47:18 +00:00
sendfile_linux.go
sendfile_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sendfile_test.go net: use io.Discard in TestSendfileOnWriteTimeoutExceeded 2021-03-09 10:37:50 +00:00
sendfile_unix_alt.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sendfile_windows.go
server_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sock_bsd.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sock_cloexec.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sock_linux.go net, internal/poll: reset value before adding in minor kernel version 2020-11-20 04:21:00 +00:00
sock_linux_test.go net: reflect TCP backlog size update of uint16->uint32 on Linux 2020-09-23 02:32:24 +00:00
sock_plan9.go
sock_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sock_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sock_windows.go
sockaddr_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockopt_aix.go net: only enable broadcast on sockets which support it 2020-05-09 00:33:27 +00:00
sockopt_bsd.go net: only perform IPv4 map check for AF_INET6 sockets 2021-03-25 19:55:42 +00:00
sockopt_linux.go net: only enable broadcast on sockets which support it 2020-05-09 00:33:27 +00:00
sockopt_plan9.go
sockopt_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockopt_solaris.go net: only enable broadcast on sockets which support it 2020-05-09 00:33:27 +00:00
sockopt_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockopt_windows.go net: only enable broadcast on sockets which support it 2020-05-09 00:33:27 +00:00
sockoptip_bsdvar.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockoptip_linux.go
sockoptip_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockoptip_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sockoptip_windows.go
splice_linux.go
splice_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
splice_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
sys_cloexec.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsock.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
tcpsock_plan9.go
tcpsock_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsock_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsock_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsockopt_darwin.go
tcpsockopt_dragonfly.go
tcpsockopt_openbsd.go
tcpsockopt_plan9.go all: add internal/itoa package 2021-03-14 17:56:50 +00:00
tcpsockopt_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsockopt_solaris.go
tcpsockopt_stub.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsockopt_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
tcpsockopt_windows.go
timeout_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
udpsock.go net: use mid-stack inlining with ReadFromUDP to avoid an allocation 2021-03-15 19:46:51 +00:00
udpsock_plan9.go net: use mid-stack inlining with ReadFromUDP to avoid an allocation 2021-03-15 19:46:51 +00:00
udpsock_plan9_test.go
udpsock_posix.go net: use mid-stack inlining with ReadFromUDP to avoid an allocation 2021-03-15 19:46:51 +00:00
udpsock_test.go net: fix BenchmarkWriteToReadFromUDP on Windows 2021-03-15 23:47:56 +00:00
unixsock.go
unixsock_linux_test.go
unixsock_plan9.go
unixsock_posix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
unixsock_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
unixsock_windows_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
write_unix_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
writev_test.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00
writev_unix.go all: go fmt std cmd (but revert vendor) 2021-02-20 03:54:50 +00:00