aboutsummaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorJanos Guljas <janos@resenje.org>2018-02-09 19:23:30 +0800
committerJanos Guljas <janos@resenje.org>2018-02-22 21:23:17 +0800
commita3a07350dcef0ba39829a20d8ddba4bd3463d293 (patch)
tree100f2515cadd92105537a12e6981fab2193435ee /rpc
parent820cf09c98706f71d4b02b6c25e62db15830f3fb (diff)
parent1a4e68721a901e86322631fed1191025a6d14c52 (diff)
downloadgo-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar.gz
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar.bz2
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar.lz
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar.xz
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.tar.zst
go-tangerine-a3a07350dcef0ba39829a20d8ddba4bd3463d293.zip
swarm, cmd/swarm: Merge branch 'master' into multiple-ens-endpoints
Diffstat (limited to 'rpc')
-rw-r--r--rpc/http.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/rpc/http.go b/rpc/http.go
index a26559b12..6717899b5 100644
--- a/rpc/http.go
+++ b/rpc/http.go
@@ -65,8 +65,9 @@ func (hc *httpConn) Close() error {
return nil
}
-// DialHTTP creates a new RPC clients that connection to an RPC server over HTTP.
-func DialHTTP(endpoint string) (*Client, error) {
+// DialHTTPWithClient creates a new RPC client that connects to an RPC server over HTTP
+// using the provided HTTP Client.
+func DialHTTPWithClient(endpoint string, client *http.Client) (*Client, error) {
req, err := http.NewRequest(http.MethodPost, endpoint, nil)
if err != nil {
return nil, err
@@ -76,10 +77,15 @@ func DialHTTP(endpoint string) (*Client, error) {
initctx := context.Background()
return newClient(initctx, func(context.Context) (net.Conn, error) {
- return &httpConn{client: new(http.Client), req: req, closed: make(chan struct{})}, nil
+ return &httpConn{client: client, req: req, closed: make(chan struct{})}, nil
})
}
+// DialHTTP creates a new RPC client that connects to an RPC server over HTTP.
+func DialHTTP(endpoint string) (*Client, error) {
+ return DialHTTPWithClient(endpoint, new(http.Client))
+}
+
func (c *Client) sendHTTP(ctx context.Context, op *requestOp, msg interface{}) error {
hc := c.writeConn.(*httpConn)
respBody, err := hc.doRequest(ctx, msg)
@@ -177,7 +183,7 @@ func validateRequest(r *http.Request) (int, error) {
return http.StatusRequestEntityTooLarge, err
}
mt, _, err := mime.ParseMediaType(r.Header.Get("content-type"))
- if err != nil || mt != contentType {
+ if r.Method != http.MethodOptions && (err != nil || mt != contentType) {
err := fmt.Errorf("invalid content type, only %s is supported", contentType)
return http.StatusUnsupportedMediaType, err
}