79 Commits

Author SHA1 Message Date
18b2da6250 Simplify server setup when testing the http.Handler-based server transport
This simplifies the code that's used for wiring up the http.Handler-based
transport for testing. It's not used outside of tests.

http2.Server.ServeConn was added somewhat recently for other reasons and
I just realized it would simplify this code as well.
2016-03-02 18:49:23 +00:00
89f694edb4 Merge pull request #569 from bradfitz/error_map
Fix crashes where transports returned errors unhandled by the message parser
2016-02-24 18:22:25 -08:00
110fd99e30 Fix crashes where transports returned errors unhandled by the message parser.
The http.Handler-based transport body reader was returning error types
not understood by the recvMsg parser. See #557 for some background and
examples.

Fix the http.Handler transport and add tests. I copied in a subset of
the http2 package's serverTest type, adapted slightly to work with
grpc. In the process of adding tests, I discovered that
ErrUnexpectedEOF was also not handled by the regular server
transport. Document the rules and fix that crash as well.

Unrelated stuff in this CL:

* make tests listen on localhost:0 instead of :0, to avoid Mac firewall
  pop-up dialogs.

* rename parser.s field to parser.r, to be more idiomatic that it's an
  io.Reader and not anything fancier. (it's not acting like type
  stream, even if that's the typical concrete type)

* move 5 byte temp buffer into parser, rather than allocating it for
  each new message. (drop in the bucket improvement in garbage; more
  to do later)

* rename http2RSTErrConvTab to http2ErrConvTab, per Qi's earlier
  CL. Also add the HTTP/1.1-required error mapping for completeness,
  not that it should ever arise with gRPC, also per Qi's earlier CL
  referenced in #557.
2016-02-24 15:09:17 -08:00
75fe76716d log error message and source address in handshake error 2016-02-23 11:14:03 -08:00
7346c871b0 Add a ServeHTTP method to *grpc.Server
This adds new http.Handler-based ServerTransport in the process,
reusing the HTTP/2 server code in x/net/http2 or Go 1.6+.

All end2end tests pass with this new ServerTransport.

Fixes grpc/grpc-go#75

Also:
Updates grpc/grpc-go#495 (lets user fix it with middleware in front)
Updates grpc/grpc-go#468 (x/net/http2 validates)
Updates grpc/grpc-go#147 (possible with x/net/http2)
Updates grpc/grpc-go#104 (x/net/http2 does this)
2016-02-12 00:16:28 +00:00
07d3de883f Update Server.Stop docs per code review comments from grpc/grpc-go#540 2016-02-09 23:50:03 +00:00
854ad3492a refine the comments of grpc.Server.Stop() 2016-02-09 15:22:53 -08:00
77ccaa8fb2 Close ServerTransport instead of the raw connection 2016-02-08 14:27:06 -08:00
93591e7568 Merge pull request #508 from bradfitz/master
server: break up the Server.Serve method into some reusable parts
2016-01-29 15:51:48 -08:00
9d2ecf553a server: break up the Server.Serve method into some reusable parts
Updates grpc/grpc-go#75
2016-01-29 23:20:54 +00:00
af8888dc8d remove Compressor/DecompressorGenerator 2016-01-29 14:38:20 -08:00
9ec0eadc55 fix a nil map access bug 2016-01-28 18:51:38 -08:00
35db64de36 Tune the server accepting code 2016-01-28 15:59:36 -08:00
48d3f37c1f remove some commented code left from previous PR 2016-01-26 16:21:22 -08:00
4258b32de7 Don't create buffer if compressor is nil 2016-01-25 11:47:04 -08:00
da3bb0c9f7 Support compression 2016-01-22 18:21:41 -08:00
7aa428f5d6 Finish trace for premature error 2015-11-30 16:41:52 -08:00
63a6c4155a remove sync.WaitGroup param from ServerTransport.HandleStream 2015-10-06 16:44:30 -07:00
9db3ca85c7 gofmt -w 2015-10-05 17:52:00 -07:00
bc49d12737 refactor servier side trace again 2015-10-05 17:49:53 -07:00
2aad9ba05f server side tracing refactoring 2015-10-02 15:06:41 -07:00
d77716f7d0 Merge branch 'master' of https://github.com/grpc/grpc-go 2015-10-02 10:29:54 -07:00
ffba849039 add the missing commit in previous PR 2015-10-01 18:20:59 -07:00
d12126f864 show deadline on server side trace 2015-10-01 18:08:09 -07:00
00c7deef34 show deadline on server side trace 2015-10-01 18:07:38 -07:00
09cdff2d62 Merge branch 'master' of https://github.com/grpc/grpc-go 2015-10-01 17:55:23 -07:00
2bd5f5b1e1 show RemoteAddr in server trace 2015-10-01 17:43:05 -07:00
3833326f9f Merge branch 'master' of https://github.com/grpc/grpc-go 2015-10-01 17:25:03 -07:00
d84ff12005 trace refactoring 2015-10-01 17:24:39 -07:00
a15e3b9562 decodeFunc -> dec 2015-10-01 16:26:00 -07:00
a71db53441 remove slice param 2015-09-29 20:10:20 -07:00
a27bb5b14a remove dead code 2015-09-29 19:08:55 -07:00
ce2ef8c969 Enable payload tracing for unary rpc 2015-09-29 19:05:13 -07:00
e07e93b00e Merge pull request #358 from Sajmani/work
grpc: make trace.FromContext work, and record handler status in traces
2015-09-28 23:29:59 -07:00
86db82df28 add TODO to fix trace 2015-09-28 10:22:26 -04:00
d39eb0802f bug fix: do not access RemoteAddr on nil net.Conn 2015-09-24 18:44:03 -07:00
efb129eb20 bug fix: do not access RemoteAddr on nil net.Conn 2015-09-24 18:41:56 -07:00
60c363f984 bug fix: do not access RemoteAddr on nil net.Conn 2015-09-24 18:39:38 -07:00
ee98c48bb4 Incorporate dsymonds' comments.
Fix another bug: cancel the Context provided to an RPC server handler
as soon as that handler returns, so that goroutines started by that
handler can detect that the handler is done and exit. Without this
fix, goroutines started by a handler will keep running, unless the
handler itself arranges to cancel the context.
2015-09-23 22:17:37 -04:00
b6c9c5a70f grpc: record the description of the status returned by server RPC
handlers in request traces, and mark the trace as an error if the
status is not OK.

Install the trace into the Context passed to server handlers using
trace.NewContext, so that code in the server handlers can annotate the
trace using trace.FromContext.
2015-09-23 17:07:35 -04:00
980b4c6d05 grpc: restore changes after sync
Change-Id: I97f0c77f95086301202d0fe4ca477ae6e22dd0b5
2015-09-23 15:18:41 -04:00
125950284c separate auth info from normal metadata 2015-08-26 11:30:43 -07:00
d12ff72146 allow access of some info of client certificate 2015-08-21 15:49:53 -07:00
7c57a23f2d grpc: rename "Recv" trace family to "grpc.Recv". 2015-08-09 23:24:53 -04:00
48f64961c0 fix a bug in the PR#264 2015-07-28 20:04:28 -07:00
75cfec3f72 fix a condition bug 2015-07-28 18:26:53 -07:00
0231ff14bc remove duplicate check 2015-07-28 18:11:22 -07:00
2574b59392 change a comment 2015-07-28 17:33:42 -07:00
d90cbe84e6 fix trace set error bugs 2015-07-28 17:18:35 -07:00
3616d6be54 fix trace setError 2015-07-28 15:27:46 -07:00