1
0
mirror of https://github.com/golang/go synced 2024-10-04 22:21:22 -06:00
Commit Graph

243 Commits

Author SHA1 Message Date
Anthony Martin
d7340d9c20 http: include DEL in the test for unprintable chars
R=adg, rsc
CC=golang-dev
https://golang.org/cl/3631041
2010-12-14 12:26:30 -05:00
Andrew Gerrand
aa9c213e56 http: ServeFile to handle Range header for partial requests
and send Content-Length.

Also includes some testing of the server code.

R=rsc
CC=golang-dev
https://golang.org/cl/2831041
2010-12-10 08:51:13 +11:00
Ryan Hitchman
062406bc64 throughout: simplify two-variable ranges with unused second variable
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/3529041
2010-12-08 21:36:56 -08:00
Russ Cox
8694959b12 http: fix build
R=dsymonds
TBR=dsymonds
CC=golang-dev
https://golang.org/cl/3425044
2010-12-07 16:20:15 -05:00
Russ Cox
b15c4245c5 crypto/tls: add *Config argument to Dial
Document undocumented exported names.
Allow nil Rand, Time, RootCAs in Config.

Fixes #1248.

R=agl1
CC=golang-dev
https://golang.org/cl/3481042
2010-12-07 16:15:15 -05:00
David Symonds
ae2495c5b0 http: Add EncodeQuery, a handy helper function for constructing URL query strings.
R=stephenm, rsc
CC=golang-dev
https://golang.org/cl/2985042
2010-12-07 15:54:04 -05:00
Brad Fitzpatrick
042a7a81d3 http: consume request body before next request
Fixes #1306.

R=rsc
CC=golang-dev
https://golang.org/cl/3332043
2010-12-01 20:00:19 -08:00
Brad Fitzpatrick
e198a5086a strings: Contains
Tiny helper to avoid strings.Index(s, sub) != -1

R=rsc, r2, r
CC=golang-dev
https://golang.org/cl/2265044
2010-11-01 14:32:48 -07:00
Michael Hoisie
7b4eed7d66 http server: don't send trailing '0' for chunked encoding when responding with 304 NotModified
R=rsc, adg
CC=golang-dev
https://golang.org/cl/2723041
2010-11-01 16:15:03 -04:00
Robert Griesemer
3478891d12 gofmt -s -w src misc
R=r, rsc
CC=golang-dev
https://golang.org/cl/2662041
2010-10-22 10:06:33 -07:00
Russ Cox
17c32ad712 http: do not close connection after sending HTTP/1.0 request
Fixes #671.

R=adg, cw
CC=golang-dev
https://golang.org/cl/2431042
2010-10-19 23:29:25 -04:00
Rob Pike
12da5a90e0 log: new interface
New logging interface simplifies and generalizes.

1) Loggers now have only one output.
2) log.Stdout, Stderr, Crash and friends are gone.
	Logging is now always to standard error by default.
3) log.Panic* replaces log.Crash*.
4) Exiting and panicking are not part of the logger's state; instead
	the functions Exit* and Panic* simply call Exit or panic after
	printing.
5) There is now one 'standard logger'.  Instead of calling Stderr,
	use Print etc.  There are now triples, by analogy with fmt:
		Print, Println, Printf
	What was log.Stderr is now best represented by log.Println,
	since there are now separate Print and Println functions
	(and methods).
6) New functions SetOutput, SetFlags, and SetPrefix allow global
	editing of the standard logger's properties.   This is new
	functionality. For instance, one can call
		log.SetFlags(log.Lshortfile|log.Ltime|log.Lmicroseconds)
	to get all logging output to show file name, line number, and
	time stamp.

In short, for most purposes
	log.Stderr -> log.Println or log.Print
	log.Stderrf -> log.Printf
	log.Crash -> log.Panicln or log.Panic
	log.Crashf -> log.Panicf
	log.Exit -> log.Exitln or log.Exit
	log.Exitf -> log.Exitf (no change)

This has a slight breakage: since loggers now write only to one
output, existing calls to log.New() need to delete the second argument.
Also, custom loggers with exit or panic properties will need to be
reworked.

All package code updated to new interface.

The test has been reworked somewhat.

The old interface will be removed after the new release.
For now, its elements are marked 'deprecated' in their comments.

Fixes #1184.

R=rsc
CC=golang-dev
https://golang.org/cl/2419042
2010-10-12 12:59:18 -07:00
Stephen Ma
8d130f5d2d http: return the correct error if a header line is too long.
R=golang-dev, r2
CC=golang-dev
https://golang.org/cl/2372042
2010-10-06 22:04:18 +11:00
Stephen Ma
ae5cb2c581 http: fix http handler signature changes previously missed
R=adg, rsc
CC=golang-dev
https://golang.org/cl/2303041
2010-09-30 13:22:28 +10:00
Stephen Ma
fd9a5d22c6 http: revised http Handler interface
R=rsc
CC=golang-dev
https://golang.org/cl/1993043
2010-09-29 14:30:12 +10:00
Brad Fitzpatrick
fbab1f1bad http: support HTTP/1.0 Keep-Alive
R=rsc, bradfitz1
CC=golang-dev
https://golang.org/cl/2261042
2010-09-27 21:55:04 -04:00
Russ Cox
5c3827cb9f http: correct escaping of different parts of URL
Fixes #1076.

R=adg
CC=golang-dev
https://golang.org/cl/2248045
2010-09-27 21:54:04 -04:00
Andrew Gerrand
1a8bd6715d http: fix redirect test for international users
R=r
CC=golang-dev
https://golang.org/cl/2197047
2010-09-23 10:40:07 +10:00
Ian Lance Taylor
7b175236cb http: Change redirect test URL, as the old one now fails.
R=rsc, r2
CC=golang-dev
https://golang.org/cl/2267042
2010-09-22 14:20:15 -07:00
Andrew Gerrand
ad9042bdfa http: don't always escape all reserved chars (fix build)
R=nigeltao, nigeltao_golang
CC=golang-dev
https://golang.org/cl/2206044
2010-09-22 16:59:35 +10:00
Andrew Gerrand
d093bdbe7e http: escape _all_ reserved characters as per the RFC
R=r
CC=golang-dev
https://golang.org/cl/2199043
2010-09-22 16:25:26 +10:00
Russ Cox
a4514c42dd http: check https certificate against host name
Fixes #1093.

R=agl, agl1
CC=golang-dev
https://golang.org/cl/2115045
2010-09-11 23:41:12 -04:00
Jukka-Pekka Kekkonen
50e0fb4c79 websocket: Add support for secure WebSockets
Fixes #842.
Fixes #1061.

R=rsc
CC=golang-dev
https://golang.org/cl/2119042
2010-09-11 00:27:16 -04:00
Jukka-Pekka Kekkonen
f7a71c6505 http: do not cache CanonicalHeaderKey
Fixes #1080.

R=rsc
CC=golang-dev
https://golang.org/cl/2158043
2010-09-08 10:20:21 -04:00
Russ Cox
8d7ae528bf http: add Date to server, Last-Modified and If-Modified-Since to file server
R=r
CC=golang-dev
https://golang.org/cl/2051041
2010-09-02 14:21:11 -04:00
Andrew Gerrand
2fe0f8da52 http: add PostForm function to post url-encoded key/value data.
This is a common task, so it makes sense to have a helper to do it.

(App Engine doesn't like "Transfer-Encoding: chunked" for POST
bodies, which is the default for regular Post.)

R=rsc
CC=golang-dev
https://golang.org/cl/2113041
2010-09-02 10:01:34 +10:00
Scott Lawrence
6752ce9331 http: obscure passwords in return value of URL.String
Fixes #974.

R=rsc
CC=golang-dev
https://golang.org/cl/1742057
2010-08-26 13:32:16 -04:00
Russ Cox
d0459447fa http: doc nit
R=r
CC=golang-dev
https://golang.org/cl/2013043
2010-08-23 18:06:28 -04:00
Scott Lawrence
e5518feaf8 http: fix typo in http.Request documentation
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/2004044
2010-08-22 14:44:00 +10:00
Russ Cox
da392d9136 build: no required environment variables
R=adg, r, PeterGo
CC=golang-dev
https://golang.org/cl/1942044
2010-08-18 10:08:49 -04:00
Russ Cox
3bf656327e http: parse query string always, not just in GET
Fixes #985.

R=dsymonds, dsymonds1
CC=golang-dev
https://golang.org/cl/1963044
2010-08-17 20:01:50 -04:00
Mikkel Krautz
c47123d07b crypto/tls: client certificate support.
This changeset implements client certificate support in crypto/tls
for both handshake_server.go and handshake_client.go

The updated server implementation sends an empty CertificateAuthorities
field in the CertificateRequest, thus allowing clients to send any
certificates they wish. Likewise, the client code will only respond
with its certificate when the server requests a certificate with this
field empty.

R=agl, rsc, agl1
CC=golang-dev
https://golang.org/cl/1975042
2010-08-16 11:22:22 -04:00
Fazlul Shahriar
4f64ecfdda http: add https client support
Fixes #851.

R=rsc
CC=golang-dev
https://golang.org/cl/1729052
2010-07-28 18:13:56 -07:00
James Whitehead
18d8c7dac6 http/transferWriter: Write body when content length unknown
Fixes #923.

R=adg, rsc
CC=golang-dev
https://golang.org/cl/1846043
2010-07-19 14:05:27 +10:00
Brad Fitzpatrick
9b64fef71a mime/multipart and HTTP multipart/form-data support
Somewhat of a work-in-progress (in that MIME is a large spec), but this is
functional and enough for discussion and/or code review.

In addition to the unit tests, I've tested with curl and Chrome with
a variety of test files, making sure the digests of files are unaltered
when read via a multipart Part.

R=rsc, adg, dsymonds1, agl1
CC=golang-dev
https://golang.org/cl/1681049
2010-07-14 17:26:14 -07:00
Andrew Gerrand
880beafc9f http: fix ParseURL to handle //relative_path properly
Fixes #900.

R=rsc
CC=golang-dev
https://golang.org/cl/1756042
2010-07-13 09:21:42 +10:00
Adam Langley
a169e6cc6a http, crypto/tls: followup fixes from 1684051.
(TBR because this is just addressing previous review comments.)

R=r
CC=golang-dev
https://golang.org/cl/1697048
2010-07-02 16:43:48 -04:00
Adam Langley
fc23def67f crypto/tls, http: Make HTTPS servers easier.
R=r, adg, rsc
CC=golang-dev
https://golang.org/cl/1684051
2010-07-02 13:00:18 -04:00
Rob Pike
38f1231f3e strings and bytes.Split: make count of 0 mean 0, not infinite.
Use a count of -1 for infinity.  Ditto for Replace.

R=rsc
CC=golang-dev
https://golang.org/cl/1704044
2010-07-01 14:08:14 -07:00
Andrew Gerrand
d3c3c15b17 http: client_test nil pointer fix
Fixes #893.

R=rsc
CC=golang-dev
https://golang.org/cl/1687045
2010-06-30 18:57:27 +10:00
Brad Fitzpatrick
743f818218 http: reply to Expect 100-continue requests automatically
This CL replaces my earlier https://golang.org/cl/1640044/show
in which Continue handling was explicit.  Instead, this CL makes
it automatic.  Reading from Body() is an implicit acknowledgement
that the request headers were fine and the body is wanted.  In that
case, the 100 Continue response is written automatically when the
request continues the "Expect: 100-continue" header.

R=rsc, adg
CC=golang-dev
https://golang.org/cl/1610042
2010-06-16 10:15:39 -07:00
Russ Cox
6aaef04469 misc cleanup: gofmt + &x -> x[0:] conversion
R=gri
CC=golang-dev
https://golang.org/cl/1620042
2010-06-08 17:51:57 -07:00
Andrew Gerrand
9b3c743f82 http: add Head function for making HTTP HEAD requests
R=rsc
CC=golang-dev
https://golang.org/cl/1581041
2010-06-08 01:28:40 +02:00
Andrew Gerrand
8334d107c4 http: fix erroneous comment
R=r
CC=golang-dev
https://golang.org/cl/1539042
2010-06-06 17:18:09 +02:00
Russ Cox
24baca4936 http: handle status 304 correctly
- cannot send body
  - should not send body-related headers

R=r
CC=golang-dev
https://golang.org/cl/1499041
2010-06-03 16:09:37 -07:00
Russ Cox
bb84f4b5d2 changes &x -> x[0:] for array to slice conversion
R=gri
CC=golang-dev
https://golang.org/cl/1326042
2010-05-27 14:51:47 -07:00
Robert Griesemer
d6acc0646b http: prevent crash if remote server is not responding with "HTTP/"
Fixes #775.

R=rsc
CC=golang-dev
https://golang.org/cl/1180042
2010-05-11 16:50:20 -07:00
Russ Cox
a267ff6a81 http: fix documentation example
R=adg
CC=golang-dev
https://golang.org/cl/813043
2010-04-05 22:55:05 -07:00
Russ Cox
c7122a3c58 simplify various code using new map index rule
R=r
CC=golang-dev
https://golang.org/cl/833044
2010-03-30 10:51:11 -07:00
Russ Cox
00f9f0c056 single argument panic
note that sortmain.go has been run through hg gofmt;
only the formatting of the day initializers changed.
i'm happy to revert that formatting if you'd prefer.

stop on error in doc/progs/run

R=r
CC=golang-dev
https://golang.org/cl/850041
2010-03-30 10:34:57 -07:00
Andrew Gerrand
dc6f8321b1 http: add HandleFunc as shortcut to Handle(path, HandlerFunc(func))
R=rsc
CC=golang-dev
https://golang.org/cl/763042
2010-03-29 10:02:37 +11:00
Rob Pike
325cf8ef21 delete all uses of panicln by rewriting them using panic or,
in the tests, println+panic.
gofmt some tests too.

R=rsc
CC=golang-dev
https://golang.org/cl/741041
2010-03-24 16:46:53 -07:00
Russ Cox
6eb251f244 runtime: malloc sampling, pprof interface
R=r
CC=golang-dev
https://golang.org/cl/719041
2010-03-24 09:40:09 -07:00
Andrew Gerrand
f4322a848d http: add Error helper function
R=r, rsc
CC=golang-dev
https://golang.org/cl/626042
2010-03-20 10:22:09 +11:00
Russ Cox
141821d512 http: change RawPath to mean raw path, not raw everything-after-scheme.
The new meaning is more useful for both websocket and http.

R=r, petar-m, ukai
CC=golang-dev, madari
https://golang.org/cl/582043
2010-03-16 18:44:55 -07:00
Petar Maymounkov
7f4c2caea5 http: add ParseQuery
R=rsc
CC=golang-dev
https://golang.org/cl/238041
2010-03-16 13:57:16 -07:00
Robert Griesemer
e8a049b440 gofmt: modified algorithm for alignment of multi-line composite/list entries
- only manual changes are in src/pkg/go/printer/nodes.go
- use a heuristic to determine "outliers" such that not entire composites are
  forced to align with them
- improves several places that were not unligned before due too simple heuristic
- unalignes some cases that contain "outliers"
- gofmt -w src misc

Fixes #644.

R=rsc, r
CC=golang-dev
https://golang.org/cl/241041
2010-03-04 17:37:15 -08:00
Robert Griesemer
305f5433f3 gofmt: fix alignment of multi-line var declarations
- gofmt -w src misc

R=rsc, r
CC=golang-dev
https://golang.org/cl/223101
2010-03-02 17:23:07 -08:00
Andrew Gerrand
adf1e4c5fd http: corrected comment for Response.GetHeader.
Fixes #622.

R=rsc
CC=golang-dev
https://golang.org/cl/224084
2010-03-03 08:53:22 +11:00
Robert Griesemer
f44fa9b4c7 gofmt: experiment: align values in map composites where possible
- gofmt -w src misc
- looking for feedback

R=rsc, r
CC=golang-dev
https://golang.org/cl/223076
2010-03-02 13:46:51 -08:00
Robert Griesemer
d177539877 go/printer, gofmt: align comments in multi-line expression lists
- gofmt -w src misc
- improves several lists and fixes minor degradation introduced
  with the fix for issue 628
- removed some dead code (stringList)

R=rsc
CC=golang-dev
https://golang.org/cl/223058
2010-02-25 16:07:55 -08:00
Russ Cox
9750adbbad strings: delete Runes, Bytes
gofmt -w -r 'strings.Bytes(a) -> []byte(a)' src/cmd src/pkg test/bench
gofmt -w -r 'strings.Runes(a) -> []int(a)' src/cmd src/pkg test/bench
delete unused imports

R=r
CC=golang-dev
https://golang.org/cl/224062
2010-02-25 16:01:29 -08:00
Russ Cox
37666561b2 http: fix handling of Close, use Close in http.Post
default to HTTP/1.1

R=petar-m
CC=golang-dev
https://golang.org/cl/224041
2010-02-24 15:13:39 -08:00
Petar Maymounkov
39e91f8858 http: use RawURL in Request.Write
R=rsc
CC=golang-dev
https://golang.org/cl/217066
2010-02-22 15:39:30 -08:00
Petar Maymounkov
e465ad3cbd http: fix bug in Post
R=rsc
CC=golang-dev
https://golang.org/cl/217059
2010-02-22 14:46:59 -08:00
Michael Hoisie
0485a999ff http request URI should never be empty
R=rsc, adg
CC=golang-dev
https://golang.org/cl/217071
2010-02-21 19:49:43 -08:00
Petar Maymounkov
1480ce373e http: unified body transfer (read & write) logic in http.Request/Response.
Compliance issue addressed here: POST requests carrying form data are required
to use "identity" transfer encoding by common nginx and apache server configurations,
e.g. wordpress.com (and many others). So, Request needed to be able to send
non-chunked encodings.

Thus, Request is extended to support identity and chunked encodings, like
Response.  Since the Read() and Write() logic are shared by both (and are
quite long), it is exported in a separate file transfer.go.

R=rsc
CC=golang-dev
https://golang.org/cl/217048
2010-02-19 08:38:40 -08:00
Petar Maymounkov
8d9c2b2eab http: add Pending method to ServerConn, ClientConn
R=rsc
CC=golang-dev
https://golang.org/cl/216052
2010-02-19 08:21:21 -08:00
Petar Maymounkov
55828cee94 http: add DumpRequest, DumpResponse, for debugging
R=rsc
CC=golang-dev
https://golang.org/cl/206050
2010-02-19 07:51:51 -08:00
Petar Maymounkov
d26e204514 http: persistent connection objects
R=rsc
CC=golang-dev
https://golang.org/cl/203051
2010-02-18 23:38:21 -08:00
Petar Maymounkov
e3b94edc03 http: do not edit Response.ContentLength in Response.Write
R=rsc
CC=golang-dev
https://golang.org/cl/207061
2010-02-18 23:38:17 -08:00
Russ Cox
58d5d6f34f http: clarify ServeHTTP return
Fixes #580.

R=adg
CC=golang-dev
https://golang.org/cl/207086
2010-02-12 14:27:44 -08:00
Petar Maymounkov
c27c3aa6d8 Added tests for http.Request/Response.Write()
R=rsc
CC=golang-dev
https://golang.org/cl/199070
2010-02-10 17:29:03 -08:00
Michael Hoisie
0cba5fc051 mime: new package, use in http
R=rsc
CC=golang-dev
https://golang.org/cl/186160
2010-02-09 20:47:45 -08:00
Petar Maymounkov
c5287ecb9c http: protect io.WriteString in Request/Response.Write with error checking,
since they were causing a silent program exit (too many EPIPE's).

R=rsc
CC=golang-dev
https://golang.org/cl/204062
2010-02-09 17:42:51 -08:00
Petar Maymounkov
4fdab85178 http: sort header keys when writing Response or Request to wire
R=rsc
CC=golang-dev
https://golang.org/cl/203050
2010-02-05 18:32:02 -08:00
Petar Maymounkov
15da069a37 http: use ChunkWriter in Request.Write
R=rsc
CC=golang-dev
https://golang.org/cl/196079
2010-02-04 00:23:01 -08:00
Petar Maymounkov
0d8797bf73 http: test for ReadReqeust
R=rsc, rsc1
CC=golang-dev
https://golang.org/cl/195068
2010-02-01 11:23:38 -08:00
Petar Maymounkov
84f9b70280 http: increase header line limit, let req.Host override req.URL.Host
Fixes #566.

R=rsc
CC=golang-dev
https://golang.org/cl/194074
2010-01-29 16:51:42 -08:00
Petar Maymounkov
dd77c63d3d http: add lexing functions
In particular, add field-value tokenizer which respects quoting rules.
The code is intended for use in tokenizing the Transfer-Encoding and Trailer fields.
The lexing function is not connected to the main parsing code yet (in the next CL).

R=rsc
CC=golang-dev
https://golang.org/cl/190085
2010-01-28 15:14:54 -08:00
Petar Maymounkov
a0e6f03add Cosmetic bug or compliance fixes in http.Response.
(1) http.Response must close resp.Body after writing.
(2) Case when resp.Body != nil and resp.ContentLength = 0 should not be
treated as an error in Response.Write, because this is what
ReadResponse often returns.
(3) Changed body.th to body.hdr for readability.

R=rsc
CC=golang-dev
https://golang.org/cl/194084
2010-01-28 15:13:26 -08:00
Petar Maymounkov
8814555534 http: make Request.Body an io.ReadCloser, matching Response.Body.
R=rsc, rsc1
CC=golang-dev
https://golang.org/cl/194046
2010-01-25 18:49:08 -08:00
Russ Cox
75c6dc9f6c http: handle old HTTP/1.0 unchunked "read to EOF" bodies.
Was trying to interpret raw body as chunked body.

Add test for ReadResponse.

Fixes #544.

R=r, petar-m
CC=golang-dev, shadowice
https://golang.org/cl/190068
2010-01-19 17:46:56 -08:00
Petar Maymounkov
914c626cae Significant extension to http.Response, which now adheres to the
usage pattern of http.Request and paves the way to persistent connection
handling.

R=rsc
CC=golang-dev
https://golang.org/cl/185043
2010-01-18 21:46:59 -08:00
Russ Cox
fe56e2cc35 http: most of a URL shouldn't use URL-escaping
Fixes #502.

R=r, hoisie
CC=golang-dev
https://golang.org/cl/181179
2010-01-07 18:10:29 -08:00
Russ Cox
968d6a6d5a http: avoid header duplication - take struct fields out of Header map
R=r
CC=golang-dev, petar-m
https://golang.org/cl/183132
2010-01-06 15:45:30 -08:00
Ivan Krasin
597e57f4d5 Add http.CanonicalPath and tests for it. Remove BUG(rsc) from url.go.
R=rsc, imkrasin
CC=golang-dev
https://golang.org/cl/179126
2010-01-06 07:47:40 -08:00
Ivan Krasin
8e2608eca8 Add basic http authentication support.
Fixes #407.

R=rsc, ajstarks
CC=ushakov
https://golang.org/cl/176076
2009-12-15 16:27:45 -08:00
Robert Griesemer
a3d1045fb7 1) Change default gofmt default settings for
parsing and printing to new syntax.

   Use -oldparser to parse the old syntax,
   use -oldprinter to print the old syntax.

2) Change default gofmt formatting settings
   to use tabs for indentation only and to use
   spaces for alignment. This will make the code
   alignment insensitive to an editor's tabwidth.

   Use -spaces=false to use tabs for alignment.

3) Manually changed src/exp/parser/parser_test.go
   so that it doesn't try to parse the parser's
   source files using the old syntax (they have
   new syntax now).

4) gofmt -w src misc test/bench

3rd set of files.

R=rsc
CC=golang-dev
https://golang.org/cl/180048
2009-12-15 15:35:38 -08:00
Rob Pike
b0683bd77a move ReadFile, WriteFile, and ReadDir into a separate io/ioutil package.
this breaks the dependency of package io on package bytes.

R=rsc
CC=golang-dev
https://golang.org/cl/163085
2009-12-02 22:02:14 -08:00
Robert Griesemer
001a8b11ff Change to container/vector interface:
- removed New(len int) in favor of new(Vector).Resize(len, cap)
- removed Init(len int) in favor of Resize(len, cap)
- runs all.bash

Fixes #294.

R=rsc, r, r1
https://golang.org/cl/157143
2009-11-24 13:43:18 -08:00
Russ Cox
5f484ec118 http: redirect to correct URL
R=r, r1
https://golang.org/cl/157154
2009-11-24 11:47:53 -08:00
Sergio Luis O. B. Correia
6fc820729e go: makes it build for the case $GOROOT has whitespaces
the bash scripts and makefiles for building go didn't take into account
the fact $GOROOT / $GOBIN could both be directories containing whitespaces,
and was not possible to build it in such a situation.

this commit adjusts the various makefiles/scripts to make it aware of that
possibility, and now it builds successfully when using a path with whitespaces
as well.

Fixes #115.

R=rsc, dsymonds1
https://golang.org/cl/157067
2009-11-23 17:32:51 -08:00
Russ Cox
9ac4449cb2 gofmt -r 'α[β:len(α)] -> α[β:]' -w src/cmd src/pkg
R=r, gri
CC=golang-dev
https://golang.org/cl/156115
2009-11-20 11:45:05 -08:00
Russ Cox
849e6f99b8 http: do not crash accessing r.Form if ParseForm fails
Fixes #233.

R=dsymonds1
https://golang.org/cl/154179
2009-11-17 14:45:10 -08:00
Russ Cox
a967f57d19 http.URLEscape: escape all bytes required by RFC 2396
Fixes #125.

R=r
https://golang.org/cl/154143
2009-11-15 12:56:50 -08:00
David Titarenco
aebae2577a Created new Conn.Flush() public method so the fd pipeline can be drained arbitrarily by the user.
Commented both flush methods so people know what they are looking at.

This is a necessary fix for streaming and long polling HTTP services.
Fixes #93.

R=r, rsc, david.titarenco
https://golang.org/cl/154099
2009-11-13 18:06:47 -08:00
Russ Cox
cb94b60cfb allow user agent to mention Go.
R=r
http://go/go-review/1024046
2009-11-10 09:10:08 -08:00
Robert Griesemer
3bb0032cd6 - replaced gofmt expression formatting algorithm with
rsc's algorithm
- applied gofmt -w misc src
- partial CL (last chunk)

R=rsc, r
http://go/go-review/1024041
2009-11-09 21:23:52 -08:00
Robert Griesemer
40621d5c0d remove semis after statements in one-statement statement lists
R=rsc, r
http://go/go-review/1025029
2009-11-09 12:07:39 -08:00
Russ Cox
ed6eb5b577 a nagging inconsistency: capitalization of
HTML vs Html, URL vs Url, HTTP vs Http,
current source is 6:1 in favor of the former,
so change instances of the latter.

R=r
CC=go-dev
http://go/go-review/1024026
2009-11-08 21:46:20 -08:00
Robert Griesemer
368f8cbc75 - fine-tuning of one-line func heuristic (nodes.go)
- enabled for function declarations (not just function literals)
- applied gofmt -w $GOROOT/src
(look for instance at src/pkg/debug/elf/elf.go)

R=r, rsc
CC=go-dev
http://go/go-review/1026006
2009-11-06 14:24:38 -08:00
Robert Griesemer
ca2a69ea06 gofmt-ify hash, http
(gofmt will be able to re-align map entries as in http nicely,
eventually)

R=rsc
http://go/go-review/1018055
2009-11-04 22:45:59 -08:00
Russ Cox
c83b838641 package net cleanup
added ReadFrom/WriteTo for packet protocols like UDP.
simplified the net.Conn interface.
added new net.PacketConn interface for packet protocols.
implemented proper UDP listener.

cleaned up LocalAddr/RemoteAddr methods - cache in netFD.

threw away various unused methods.

an interface change:
introduced net.Addr as a network address interface,
to avoid conversion of UDP host:port to string and
back for every ReadFrom/WriteTo sequence.

another interface change:
since signature of Listener.Accept was changing anyway,
dropped the middle return value, because it is available
as c.RemoteAddr().  (the Accept signature predates the
existence of that method.)

Dial and Listen still accept strings, but the proto-specific
versions DialTCP, ListenUDP, etc. take net.Addr instead.

because the generic Dial didn't change and because
no one calls Accept directly (only indirectly via the http
server), very little code will be affected by these interface
changes.

design comments welcome.

R=p
CC=go-dev, r
http://go/go-review/1018017
2009-11-02 18:37:30 -08:00
Rob Pike
4d310f2434 reverse the arguments to io.Copy so the destination is on the
left, like an assignment, like strcpy, etc.

R=rsc
CC=go-dev
http://go/go-review/1016011
2009-11-01 20:59:49 -08:00
Rob Pike
1726e81c00 publish Request.Write (rename from Request.write)
R=rsc
CC=go-dev
http://go/go-review/1015003
2009-10-23 14:19:47 -07:00
Rob Pike
c6e904d580 have http server in-line PDF files.
add go course pdf files to doc/ for godoc to serve.
fix links to point to those files.

R=rsc
DELTA=7  (4 added, 0 deleted, 3 changed)
OCL=35972
CL=35981
2009-10-21 19:52:11 -07:00
Russ Cox
21b41bec83 test and fix http redirect handling
BUG=2197242
R=r
DELTA=16  (16 added, 0 deleted, 0 changed)
OCL=35878
CL=35882
2009-10-19 12:10:14 -07:00
Stephen Ma
f9e08759de Trivial documentation fix for func ListenAndServe().
R=go-dev
APPROVED=gri
DELTA=1  (1 added, 0 deleted, 0 changed)
OCL=35817
CL=35819
2009-10-15 22:18:14 -07:00
Rob Pike
a34dd7156b typo
R=rsc
DELTA=1  (0 added, 0 deleted, 1 changed)
OCL=35743
CL=35762
2009-10-15 00:27:40 -07:00
Russ Cox
094f1d5990 more lgtm files from gofmt
R=gri
OCL=35485
CL=35488
2009-10-08 15:14:54 -07:00
Russ Cox
c2ec9583a0 apply gofmt to go, gob, hash, http, image, io, json, log
R=gri
DELTA=1359  (138 added, 32 deleted, 1189 changed)
OCL=35408
CL=35420
2009-10-06 19:41:51 -07:00
Bill Neubauer
41a2b21f26 Fixing HTTP POST handling to work with Chrome and Safari.
request.go does not handle Content-Type correctly for the definition of
Media Types.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7

R=rsc
APPROVED=rsc
DELTA=44  (42 added, 0 deleted, 2 changed)
OCL=35274
CL=35306
2009-10-03 11:09:01 -07:00
Rob Pike
0632bb4ae5 rename the public exvar package to be expvar.
R=rsc
DELTA=684  (324 added, 324 deleted, 36 changed)
OCL=35161
CL=35163
2009-09-30 13:11:33 -07:00
Rob Pike
7be770071f use buf.String() instead of string(buf.Bytes())
use strings.Buffer instead of bytes.Buffer in some places

R=rsc
DELTA=40  (0 added, 3 deleted, 37 changed)
OCL=34770
CL=34775
2009-09-17 23:51:06 -07:00
Russ Cox
20011bc878 unused imports
R=r
OCL=34731
CL=34731
2009-09-17 10:27:04 -07:00
Rob Pike
d5be41fc4e rename bytes.Buffer.Data() to bytes.Buffer.Bytes()
R=rsc
DELTA=152  (6 added, 0 deleted, 146 changed)
OCL=34695
CL=34701
2009-09-16 15:15:00 -07:00
Russ Cox
ca6a0fee1b more "declared and not used".
the last round omitted := range and only
checked 1 out of N vars in a multi-var :=

R=r
OCL=34624
CL=34638
2009-09-15 09:41:59 -07:00
Russ Cox
28eba4877b fix "declared and not used" errors in non-test code.
R=r
DELTA=112  (6 added, 57 deleted, 49 changed)
OCL=34610
CL=34610
2009-09-14 17:20:29 -07:00
Russ Cox
4b409289f6 remove Line in bufio.ReadLine(Bytes|Slice|String)
also drop bool arg from ReadString

R=r
DELTA=45  (13 added, 1 deleted, 31 changed)
OCL=33923
CL=33960
2009-08-27 11:20:15 -07:00
Russ Cox
90dcd5face add io.LimitReader.
use it to limit data read from http.Request Body

R=r
DELTA=32  (8 added, 6 deleted, 18 changed)
OCL=33899
CL=33916
2009-08-26 16:23:54 -07:00
David Symonds
429157848f Wrap kludge text in HTML comments so the text/html output will remain valid HTML.
Be more conservative: only mess with text/html and text/plain output.

R=rsc
APPROVED=rsc
DELTA=20  (12 added, 5 deleted, 3 changed)
OCL=33806
CL=33812
2009-08-24 17:31:35 -07:00
Russ Cox
52cf67a611 naming cleanup.
gzip.GzipInflater -> gzip.Inflater
gzip.NewGzipInflater -> gzip.NewInflater
zlib.NewZlibInflater -> zlib.NewInflater

io.ByteReader deleted in favor of bytes.Buffer
io.NewByteReader -> bytes.NewBuffer

R=r
DELTA=52  (3 added, 0 deleted, 49 changed)
OCL=33589
CL=33592
2009-08-20 10:18:48 -07:00
Rob Pike
4481df645b fix spelling that is correct but bothers me anyway
R=rsc
DELTA=3  (0 added, 0 deleted, 3 changed)
OCL=33496
CL=33519
2009-08-19 10:07:31 -07:00
Russ Cox
b5c57fea96 delete forward type declarations
R=r
DELTA=163  (1 added, 149 deleted, 13 changed)
OCL=33106
CL=33111
2009-08-12 14:40:47 -07:00
Russ Cox
b04ac108fd convert non-low-level non-google pkg code
to whole-package compilation.

R=r
OCL=33070
CL=33101
2009-08-12 13:19:17 -07:00
Russ Cox
0496040bd6 remove unnecessary pkg. references
R=r
DELTA=95  (0 added, 0 deleted, 95 changed)
OCL=33012
CL=33012
2009-08-10 22:02:51 -07:00
Russ Cox
aa1e8064b2 change HTTP access for RPC.
1. use CONNECT instead of GET.
   CONNECT has exactly the meaning
   we want; most of the time people
   connect to ip:port; we're connecting
   to /_goRPC_

2. wait for a successful HTTP response
   before assuming we are connected to
   the RPC protocol.  this allows better
   error reporting and also keeps the
   protocol alternating between speakers,
   so that the buffering in the HTTP request
   reader cannot accidentally eat some
   RPC bytes too.

gotest sometimes hangs, but not in HTTP.

gotest -match=Unknown hangs every few runs
even in a clean client.

R=r
DELTA=117  (57 added, 44 deleted, 16 changed)
OCL=31656
CL=31685
2009-07-15 10:49:47 -07:00
Russ Cox
d436a70193 allow conversion to interface type
when implicit assignment would have been okay.

R=ken
OCL=31225
CL=31227
2009-07-06 17:20:48 -07:00
Russ Cox
5d5904bb4d bug163 bug164 bug166
R=ken
OCL=30889
CL=30889
2009-06-29 17:46:22 -07:00
Russ Cox
d3a412a5ab io.StringBytes -> strings.Bytes
io.ByteBuffer -> bytes.Buffer

left io.ByteBuffer stub around for now,
for protocol compiler.

R=r
OCL=30861
CL=30872
2009-06-29 15:24:23 -07:00
David Symonds
a2a827542a http Request parsing, plus a convenient accessor.
R=rsc
APPROVED=rsc
DELTA=95  (40 added, 14 deleted, 41 changed)
OCL=30727
CL=30784
2009-06-25 21:05:44 -07:00
Russ Cox
a0bcaf4c00 Change os.Error convention:
echo back context of call in error if likely to be useful.

For example, if os.Open("/etc/passwd", os.O_RDONLY)
fails with syscall.EPERM, it returns as the os.Error

	&PathError{
		Op: "open",
		Path: "/etc/passwd"
		Error: os.EPERM
	}

which formats as

	open /etc/passwd: permission denied

Not converted:

	datafmt
	go/...
	google/...
	regexp
	tabwriter
	template

R=r
DELTA=1153  (561 added, 156 deleted, 436 changed)
OCL=30738
CL=30781
2009-06-25 20:24:55 -07:00
Russ Cox
a50cbf6c73 style police: parens in if, for, switch, range
R=r
DELTA=32  (0 added, 3 deleted, 29 changed)
OCL=30718
CL=30725
2009-06-24 20:12:50 -07:00
David Symonds
30533d607a Change strings.Split, bytes.Split to take a maximum substring count argument.
R=rsc
APPROVED=r
DELTA=131  (39 added, 10 deleted, 82 changed)
OCL=30669
CL=30723
2009-06-24 19:02:29 -07:00
David Symonds
e6ff6c8e56 Fix http client handling of status messages with spaces (e.g. "HTTP/1.1 400 Bad
Request".
Use chunked Transfer-Encoding for all POSTs.
Implement chunked reading.
Change http.Request.write to be HTTP/1.1 only.

R=rsc
APPROVED=rsc
DELTA=178  (123 added, 26 deleted, 29 changed)
OCL=30563
CL=30673
2009-06-23 18:49:47 -07:00
David Symonds
343bfcfca7 Don't prefix Url.Path with a slash in Request.write,
because Url.Path already starts with one.
Avoid crashing in Request.ParseForm if there is no body.

R=rsc
APPROVED=rsc
DELTA=5  (4 added, 0 deleted, 1 changed)
OCL=30552
CL=30607
2009-06-22 14:50:12 -07:00
Russ Cox
64684cc2a2 introduce os.EOF and io.ErrUnexpectedEOF.
remove io.ErrEOF.
rename io.FullRead to io.ReadFull, to match
   ReadAtLeast and ReadAll.
remove io.FullReader, because it is now unused.

R=r
DELTA=295  (88 added, 105 deleted, 102 changed)
OCL=30544
CL=30588
2009-06-22 13:26:13 -07:00
David Symonds
022ee0c26f Add form body parsing to http.Request.
better error handling throughout.

R=r,rsc
APPROVED=r
DELTA=254  (201 added, 3 deleted, 50 changed)
OCL=30515
CL=30545
2009-06-19 18:02:15 -07:00
Jacob Baskin
536c2aa6ae URL should have an empty Scheme if there is an invalid character (i.e.
not [a-zA-Z0-9+-.]) before there is a ":".

This is particularly helpful in the erroneous-but-relatively-common
case of relative URLs containing an unescaped colon in the query
string--see the added test for an example.

R=rsc
APPROVED=rsc
DELTA=15  (15 added, 0 deleted, 0 changed)
OCL=30354
CL=30356
2009-06-16 13:23:42 -07:00
David Symonds
cbd0092173 Switch http client_test to use google.com/robots.txt to avoid redirect loop.
www.google.com seems to be redirecting requests in an infinite loop. I haven't tracked down whether it's their code or this code that is causing it. This is just a quick fix so that this test passes.

APPROVED=r
DELTA=4  (0 added, 0 deleted, 4 changed)
OCL=30178
CL=30210
2009-06-11 15:55:03 -07:00
Steve Newman
f315fb3d56 Basic HTTP client.
R=rsc
APPROVED=rsc
DELTA=392  (386 added, 2 deleted, 4 changed)
OCL=29963
CL=30107
2009-06-09 10:58:58 -07:00
Rob Pike
d90e7cbac6 mv src/lib to src/pkg
tests: all.bash passes, gobuild still works, godoc still works.

R=rsc
OCL=30096
CL=30102
2009-06-09 09:53:44 -07:00