aboutsummaryrefslogtreecommitdiffstats
path: root/rpc/http.go
Commit message (Collapse)AuthorAgeFilesLines
* rpc: implement full bi-directional communication (#18471)Felix Lange2019-02-041-31/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | New APIs added: client.RegisterName(namespace, service) // makes service available to server client.Notify(ctx, method, args...) // sends a notification ClientFromContext(ctx) // to get a client in handler method This is essentially a rewrite of the server-side code. JSON-RPC processing code is now the same on both server and client side. Many minor issues were fixed in the process and there is a new test suite for JSON-RPC spec compliance (and non-compliance in some cases). List of behavior changes: - Method handlers are now called with a per-request context instead of a per-connection context. The context is canceled right after the method returns. - Subscription error channels are always closed when the connection ends. There is no need to also wait on the Notifier's Closed channel to detect whether the subscription has ended. - Client now omits "params" instead of sending "params": null when there are no arguments to a call. The previous behavior was not compliant with the spec. The server still accepts "params": null. - Floating point numbers are allowed as "id". The spec doesn't allow them, but we handle request "id" as json.RawMessage and guarantee that the same number will be sent back. - Logging is improved significantly. There is now a message at DEBUG level for each RPC call served.
* GraphQL master FF for review (#18445)Kris Shinn2019-01-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Initial work on a graphql API * Added receipts, and more transaction fields. * Finish receipts, add logs * Add transactionCount to block * Add types and . * Update Block type to be compatible with ethql * Rename nonce to transactionCount in Account, to be compatible with ethql * Update transaction, receipt and log to match ethql * Add query operator, for a range of blocks * Added ommerCount to Block * Add transactionAt and ommerAt to Block * Added sendRawTransaction mutation * Add Call and EstimateGas to graphQL API * Refactored to use hexutil.Bytes instead of HexBytes * Replace BigNum with hexutil.Big * Refactor call and estimateGas to use ethapi struct type * Replace ethgraphql.Address with common.Address * Replace ethgraphql.Hash with common.Hash * Converted most quantities to Long instead of Int * Add support for logs * Fix bug in runFilter * Restructured Transaction to work primarily with headers, so uncle data is reported properly * Add gasPrice API * Add protocolVersion API * Add syncing API * Moved schema into its own source file * Move some single use args types into anonymous structs * Add doc-comments * Fixed backend fetching to use context * Added (very) basic tests * Add documentation to the graphql schema * Fix reversion for formatting of big numbers * Correct spelling error * s/BigInt/Long/ * Update common/types.go * Fixes in response to review * Fix lint error * Updated calls on private functions * Fix typo in graphql.go * Rollback ethapi breaking changes for graphql support Co-Authored-By: Arachnid <arachnid@notdot.net>
* rpc: add application/json-rpc as accepted content type, fixes #18293 (#18310)Martin Holst Swende2018-12-141-7/+20
|
* cmd/clef, signer: security fixes (#17554)Martin Holst Swende2018-09-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * signer: remove local path disclosure from extapi * signer: show more data in cli ui * rpc: make http server forward UA and Origin via Context * signer, clef/core: ui changes + display UA and Origin * signer: cliui - indicate less trust in remote headers, see https://github.com/ethereum/go-ethereum/issues/17637 * signer: prevent possibility swap KV-entries in aes_gcm storage, fixes #17635 * signer: remove ecrecover from external API * signer,clef: default reject instead of warn + valideate new passwords. fixes #17632 and #17631 * signer: check calldata length even if no ABI signature is present * signer: fix failing testcase * clef: remove account import from external api * signer: allow space in passwords, improve error messsage * signer/storage: fix typos
* rpc: increase maxRequestContentLength size to 512kB (#17595)HackyMiner2018-09-251-1/+1
|
* rpc: make HTTP RPC timeouts configurable, raise defaults (#17240)Ryan Schneider2018-07-311-4/+52
| | | | | | | | | | | | | | | | * rpc: Make HTTP server timeout values configurable * rpc: Remove flags for setting HTTP Timeouts, configuring via .toml is sufficient. * rpc: Replace separate constants with a single default struct. * rpc: Update HTTP Server Read and Write Timeouts to 30s. * rpc: Remove redundant NewDefaultHTTPTimeouts function. * rpc: document HTTPTimeouts. * rpc: sanitize timeout values for library use
* rpc: set timeouts for http server, see #16859Martin Holst Swende2018-06-041-1/+6
|
* rpc: use HTTP request context as top-level context (#16861)Ryan Schneider2018-06-021-1/+1
|
* rpc: golint error with context as last parameter (#16657)kiel barry2018-05-031-1/+1
| | | | | | * rpc/*: golint error with context as last parameter * Update json.go
* rpc: handle HTTP response error codes (#16500)Martin Holst Swende2018-04-191-1/+13
|
* cmd/clef, signer: initial poc of the standalone signer (#16154)Martin Holst Swende2018-04-161-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * signer: introduce external signer command * cmd/signer, rpc: Implement new signer. Add info about remote user to Context * signer: refactored request/response, made use of urfave.cli * cmd/signer: Use common flags * cmd/signer: methods to validate calldata against abi * cmd/signer: work on abi parser * signer: add mutex around UI * cmd/signer: add json 4byte directory, remove passwords from api * cmd/signer: minor changes * cmd/signer: Use ErrRequestDenied, enable lightkdf * cmd/signer: implement tests * cmd/signer: made possible for UI to modify tx parameters * cmd/signer: refactors, removed channels in ui comms, added UI-api via stdin/out * cmd/signer: Made lowercase json-definitions, added UI-signer test functionality * cmd/signer: update documentation * cmd/signer: fix bugs, improve abi detection, abi argument display * cmd/signer: minor change in json format * cmd/signer: rework json communication * cmd/signer: implement mixcase addresses in API, fix json id bug * cmd/signer: rename fromaccount, update pythonpoc with new json encoding format * cmd/signer: make use of new abi interface * signer: documentation * signer/main: remove redundant option * signer: implement audit logging * signer: create package 'signer', minor changes * common: add 0x-prefix to mixcaseaddress in json marshalling + validation * signer, rules, storage: implement rules + ephemeral storage for signer rules * signer: implement OnApprovedTx, change signing response (API BREAKAGE) * signer: refactoring + documentation * signer/rules: implement dispatching to next handler * signer: docs * signer/rules: hide json-conversion from users, ensure context is cleaned * signer: docs * signer: implement validation rules, change signature of call_info * signer: fix log flaw with string pointer * signer: implement custom 4byte databsae that saves submitted signatures * signer/storage: implement aes-gcm-backed credential storage * accounts: implement json unmarshalling of url * signer: fix listresponse, fix gas->uint64 * node: make http/ipc start methods public * signer: add ipc capability+review concerns * accounts: correct docstring * signer: address review concerns * rpc: go fmt -s * signer: review concerns+ baptize Clef * signer,node: move Start-functions to separate file * signer: formatting
* rpc: limit chunked requests (#16343)Felix Lange2018-03-261-1/+2
|
* rpc: enforce the 128KB request limits on websockets tooPéter Szilágyi2018-03-131-5/+5
|
* node, rpc: fix linter issuesMartin Holst Swende2018-02-121-1/+0
|
* rpc: dns rebind protection (#15962)Martin Holst Swende2018-02-121-3/+54
| | | | | | | | | | | | | | | | * cmd,node,rpc: add allowedHosts to prevent dns rebinding attacks * p2p,node: Fix bug with dumpconfig introduced in r54aeb8e4c0bb9f0e7a6c67258af67df3b266af3d * rpc: add wildcard support for rpcallowedhosts + go fmt * cmd/geth, cmd/utils, node, rpc: ignore direct ip(v4/6) addresses in rpc virtual hostnames check * http, rpc, utils: make vhosts into map, address review concerns * node: change log messages to use geth standard (not sprintf) * rpc: fix spelling
* rpc: Support specifying HTTP client in RPC dialing (#15836)Steven Roose2018-01-241-3/+9
| | | | | | | | | | | * rpc: Support specifying HTTP client in RPC dialing Adds a minimal interface that captures http.Client and adds a new method rpc.DialHTTPClient that takes a client using that interface. The existing rpc.DialHTTP method is then alternatively implemented by using the new rpc.DialHTTPClient method provided with a standard *http.Client. * rpc: fix minor doc typos
* rpc: allow OPTIONS requests without Content-Type (#15759)Sorin Neacsu2017-12-281-1/+1
| | | Fixes #15740
* rpc: use method constants instead of literal strings (#15652)Vitaly V2017-12-131-4/+4
|
* rpc: minor cleanups to RPC PRPéter Szilágyi2017-11-171-18/+14
|
* rpc: disallow PUT and DELETE on HTTP (#15501)Armani Ferrante2017-11-171-15/+28
| | | Fixes #15493
* rpc: allow dumb empty requests for AWS health checksPéter Szilágyi2017-11-161-7/+10
|
* rpc: check content-type for HTTP requests (#15220)bas-vk2017-11-091-0/+11
|
* rpc: fix closure problem in batch processing (#14688)bloonfield2017-06-261-2/+2
| | | Demo of the issue: https://play.golang.org/p/EeTLFfppqC
* rpc: disable CORS if user has not specified custom configBas van Kervel2017-05-021-0/+5
|
* cmd/utils, node: remove unused solc references and improve RPC config (#14324)bas-vk2017-04-131-8/+3
| | | | | Currently http cors and websocket origins are a comma separated string in the config object. These are replaced with string arrays that are more expressive in case of a config file.
* all: import "context" instead of "golang.org/x/net/context"Felix Lange2017-03-231-3/+3
| | | | | | | | | | There is no need to depend on the old context package now that the minimum Go version is 1.7. The move to "context" eliminates our weird vendoring setup. Some vendored code still uses golang.org/x/net/context and it is now vendored in the normal way. This change triggered new vet checks around context.WithTimeout which didn't fire with golang.org/x/net/context.
* rpc: add support for extended headers in CORS requests (#3783)Micah Zoltu2017-03-161-0/+1
| | | | Fixes #3762. Details about parameter: https://github.com/rs/cors/blob/a62a804a8a009876ca59105f7899938a1349f4b3/cors.go#L50-L54
* internal/debug, internal/ethapi, rpc, swarm/storage: Ran "go fmt"Kenji Siu2016-11-011-1/+1
|
* rpc: set CORS Max-Age to reduce preflight OPTIONS requestsJonathan Brown2016-10-031-0/+1
|
* rpc: add new client, use it everywhereFelix Lange2016-07-231-65/+98
| | | | | | The new client implementation supports concurrent requests, subscriptions and replaces the various ad hoc RPC clients throughout go-ethereum.
* rpc: various fixes/enhancementsBas van Kervel2016-04-121-14/+6
| | | | | | | | rpc: be less restrictive on the request id rpc: improved documentation console: upgrade web3.js to version 0.16.0 rpc: cache http connections rpc: rename wsDomains parameter to wsOrigins
* rpc: add pub/sub supportBas van Kervel2016-04-021-1/+1
|
* rpc/http: improve request handlingBas van Kervel2016-03-231-221/+56
|
* cmd, node, rpc: readd inproc RPC client, expose via nodePéter Szilágyi2016-02-091-1/+1
|
* cmd, common, node, rpc: move HTTP RPC into node, drop singletone aspectPéter Szilágyi2016-02-051-54/+7
|
* rpc: allow RPC requests on GET tooPéter Szilágyi2016-02-031-23/+17
|
* rpc: migrated the RPC insterface to a new reflection based RPC layerBas van Kervel2016-01-261-0/+368
|
* removed old rpc structure and added new inproc api clientBas van Kervel2015-06-221-163/+0
|
* Permit multiple CORS domainsTaylor Gerring2015-05-181-1/+2
| | | | Separated by spaces
* Unreverse orderingTaylor Gerring2015-05-151-2/+1
|
* Omit replies for notification requestsTaylor Gerring2015-05-151-3/+22
| | | | When Id is missing, the client does not want a response
* rpc, xeth: fix #881, gracefully handle offline whisperPéter Szilágyi2015-05-111-1/+1
|
* Remove old logger from RPC pkgTaylor Gerring2015-04-271-3/+2
|
* Don't export types/functionsBas van Kervel2015-04-191-4/+4
|
* Replaced channel pointer field with non pointer channelBas van Kervel2015-04-191-1/+1
|
* Stop accepted and alive connections (http keep-alive) when the rpc service ↵Bas van Kervel2015-04-171-11/+11
| | | | is stopped
* admin.stopRPC support added which stops the RPC HTTP listenerBas van Kervel2015-04-161-2/+19
|
* rpc: changed logging to use glogobscuren2015-04-151-2/+3
|
* Add settable domain to CORS handler #331Taylor Gerring2015-03-301-3/+17
|
* Abstract http into rpc packageTaylor Gerring2015-03-301-0/+12
| | | | New RpcConfig object to pass growing config
* Report InvalidTypeError as -32602 to JSON RPCTaylor Gerring2015-03-291-1/+1
|
* Use ExtraDB for storage. Fixes #577Taylor Gerring2015-03-271-2/+2
|
* Make send internalTaylor Gerring2015-03-201-6/+6
|
* Remove extra loggerTaylor Gerring2015-03-201-2/+2
|
* Remove JsonWrapperTaylor Gerring2015-03-181-6/+19
|
* Support JSON RPC batch requestsTaylor Gerring2015-03-181-33/+52
|\
| * Add JSON RPC batch supportTaylor Gerring2015-03-181-33/+52
| | | | | | | | http://www.jsonrpc.org/specification#batch
* | rpczelig2015-03-151-7/+7
|/ | | | | - camelcase fields dont play nice with otto value magic: JsonRpc -> Jsonrpc, ID -> Id - jeth: ethereum.js rpc transport provider direct bridge between js and ethereumApi via otto jsre
* Consolidate error type switchTaylor Gerring2015-03-131-14/+2
|
* Convert to proper errorsTaylor Gerring2015-03-131-5/+34
| | | | Allow returning different JSON RPC error codes depending on error type
* Merge ethereum/poc-9 into accounts-integrationFelix Lange2015-03-101-1/+11
| | | | | | | | | | Conflicts: cmd/utils/cmd.go cmd/utils/flags.go core/manager.go eth/backend.go rpc/http/server.go xeth/xeth.go
* rpc: add dataDir parameter and JSON-RPC handlerFelix Lange2015-03-101-0/+42