• Brad Fitzpatrick's avatar
    [release-branch.go1.8] net, net/http: adjust time-in-past constant even earlier · e35c01b4
    Brad Fitzpatrick authored
    The aLongTimeAgo time value in net and net/http is used to cancel
    in-flight read and writes. It was set to time.Unix(233431200, 0)
    which seemed like far enough in the past.
    
    But Raspberry Pis, lacking a real time clock, had to spoil the fun and
    boot in 1970 at the Unix epoch time, breaking assumptions in net and
    net/http.
    
    So change aLongTimeAgo to time.Unix(1, 0), which seems like the
    earliest safe value. I don't trust subsecond values on all operating
    systems, and I don't trust the Unix zero time. The Raspberry Pis do
    advance their clock at least. And the reported problem was that Hijack
    on a ResponseWriter hung forever, waiting for the connection read
    operation to finish. So now, even if kernel + userspace boots in under
    a second (unlikely), the Hijack will just have to wait for up to a
    second.
    
    Updates #19747
    Fixes #19771 (backport to Go 1.8.x)
    
    Change-Id: Id59430de2e7b5b5117d4903a788863e9d344e53a
    Reviewed-on: https://go-review.googlesource.com/38785
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    (cherry picked from commit e83fc2e44336423dab94bfe74fad4c4e6a4703b3)
    Reviewed-on: https://go-review.googlesource.com/38786Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    e35c01b4
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang_org/x Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...