• Brad Fitzpatrick's avatar
    http: fix handling of 0-lengthed http requests · 9c436ab7
    Brad Fitzpatrick authored
    Via Russ Ross' bug report on golang-nuts, it was not possible
    to send an HTTP request with a zero length body with either a
    Content-Length (it was stripped) or chunking (it wasn't set).
    
    This means Go couldn't upload 0-length objects to Amazon S3.
    (which aren't as silly as they might sound, as S3 objects can
    have key/values associated with them, set in the headers)
    
    Amazon further doesn't supported chunked uploads. (not Go's
    problem, but we should be able to let users set an explicit
    Content-Length, even if it's zero.)
    
    To fix the ambiguity of an explicit zero Content-Length and
    the Request struct's default zero value, users need to
    explicit set TransferEncoding to []string{"identity"} to force
    the Request.Write to include a Content-Length: 0.  identity is
    in RFC 2616 but is ignored pretty much everywhere.  We don't
    even then serialize it on the wire, since it's kinda useless,
    except as an internal sentinel value.
    
    The "identity" value is then documented, but most users can
    ignore that because NewRequest now sets that.
    
    And adds more tests.
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/4603041
    9c436ab7
Name
Last commit
Last update
..
archive Loading commit data...
asn1 Loading commit data...
big Loading commit data...
bufio Loading commit data...
bytes Loading commit data...
cmath Loading commit data...
compress Loading commit data...
container Loading commit data...
crypto Loading commit data...
debug Loading commit data...
ebnf Loading commit data...
encoding Loading commit data...
exec Loading commit data...
exp Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
gob Loading commit data...
hash Loading commit data...
html Loading commit data...
http Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
io Loading commit data...
json Loading commit data...
log Loading commit data...
mail Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
netchan Loading commit data...
os Loading commit data...
patch Loading commit data...
path Loading commit data...
rand Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
rpc Loading commit data...
runtime Loading commit data...
scanner Loading commit data...
smtp Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
syslog Loading commit data...
tabwriter Loading commit data...
template Loading commit data...
testing Loading commit data...
time Loading commit data...
try Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
utf16 Loading commit data...
utf8 Loading commit data...
websocket Loading commit data...
xml Loading commit data...
Makefile Loading commit data...
deps.bash Loading commit data...