Commit graph

910 commits

Author SHA1 Message Date
Daniel Liu
3ae8b8a99d
rpc, internal/cmdtest: increase timeout in tests #27083 (#991)
This change gives the cmd-tests have a bit more time to finish before getting forcibly torn down.

Co-authored-by: Delweng <delweng@gmail.com>
2025-04-28 10:47:39 +08:00
Daniel Liu
5af41b62a7
rpc: more accurate checking of handler method signatures #27287 (#990)
This changes the RPC server to ignore methods using *context.Context as parameter
and *error as return value type. Methods with such types would crash the server when
called.

Co-authored-by: Stephen Guo <stephen.fire@gmail.com>
2025-04-28 10:45:50 +08:00
Daniel Liu
e6b7ae906b
rpc: websocket should respect the HTTP_PROXY by default #27264 (#989) 2025-04-28 10:44:31 +08:00
JukLee0ira
16969b1569 rpc: fix setting client in DialHTTPWithClient #26470 2025-04-28 10:25:07 +08:00
JukLee0ira
0e84001c0b node, rpc: add JWT auth support in client #24911 2025-04-28 10:25:07 +08:00
Daniel Liu
2ad5333196
rpc: use atomic types #27214 (#988)
rpc: use atomic type

Co-authored-by: s7v7nislands <s7v7nislands@gmail.com>
2025-04-28 09:19:07 +08:00
Daniel Liu
051938ba7e
rpc: increase websocket frame size #26883 (#986)
This increases the maximum allowed message size to 32MB.

Originally submitted at https://github.com/ledgerwatch/erigon/pull/2739

example block failure: https://etherscan.io/tx/0x1317d973a55cedf9b0f2df6ea48e8077dd176f5444a3423368a46d6e4db89982#internal

Co-authored-by: Jonathan Otto <jonathan.otto@gmail.com>
2025-04-28 09:11:52 +08:00
Daniel Liu
9c5712a79c
rpc: fix off-by-one in ipc endpoint length check #26614 (#985)
This change fixes a minor flaw in the check for ipc endpoint length. The max_path_size is the max path that an ipc endpoint can have, which is 208. However, that size concerns the null-terminated pathname, so we need to account for an extra null-character too.

Co-authored-by: Martin Holst Swende <martin@swende.se>
2025-04-28 09:10:46 +08:00
JukLee0ira
230a2f09ba
cmd/geth, node, rpc: implement jwt tokens #24364 (#993)
* cmd/geth, node, rpc: implement jwt tokens #24364

* fix
2025-04-27 18:17:09 +08:00
Daniel Liu
58e9b8c8f6
node, rpc: improve HTTP write timeout handling #25457 (#982)
Here we add special handling for sending an error response when the write timeout of the
HTTP server is just about to expire. This is surprisingly difficult to get right, since is
must be ensured that all output is fully flushed in time, which needs support from
multiple levels of the RPC handler stack:

The timeout response can't use chunked transfer-encoding because there is no way to write
the final terminating chunk. net/http writes it when the topmost handler returns, but the
timeout will already be over by the time that happens. We decided to disable chunked
encoding by setting content-length explicitly.

Gzip compression must also be disabled for timeout responses because we don't know the
true content-length before compressing all output, i.e. compression would reintroduce
chunked transfer-encoding.

Co-authored-by: Sina Mahmoodi <1591639+s1na@users.noreply.github.com>
2025-04-25 08:01:44 +08:00
JukLee0ira
ef02abcf8f
rpc, internal/guide: speed up tests a bit #26193 (#981) 2025-04-24 22:08:58 +08:00
Daniel Liu
149beccd14
rpc: decrease websocket ping interval #26253 (#979)
This is to cater for more node providers.

Co-authored-by: Wihan de Beer <debeerwihan@gmail.com>
2025-04-24 19:09:42 +08:00
Daniel Liu
a35bc8de19
rpc: support injecting HTTP headers through context #26023 (#977)
This adds a way to specify HTTP headers per request.

Co-authored-by: storyicon <storyicon@foxmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 19:08:16 +08:00
Daniel Liu
f8eb869b08
rpc: fix connection tracking set in Server #26180 (#976)
rpc: fix connection tracking in Server

When upgrading to mapset/v2 with generics, the set element type used in
rpc.Server had to be changed to *ServerCodec because ServerCodec is not
'comparable'. While the distinction is technically correct, we know all
possible ServerCodec types, and all of them are comparable. So just use
a map instead.

Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 19:07:30 +08:00
Daniel Liu
18c9efa71d
rpc: handle wrong HTTP batch response length #26064 (#975)
Co-authored-by: Jordan Krage <jmank88@gmail.com>
2025-04-24 19:06:19 +08:00
Daniel Liu
02eb1d5375
rpc: improve error codes for internal server errors #25678 (#974)
This changes the error code returned by the RPC server in certain situations:

- handler panic: code -32603
- result marshaling error: code -32603
- attempt to subscribe via HTTP: code -32001

In all of the above cases, the server previously returned the default error
code -32000.

Co-authored-by: Nicholas <nicholas.zhaoyu@gmail.com>
Co-authored-by: Nicholas Zhao <nicholas.zhao@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 19:03:29 +08:00
Daniel Liu
1d6b09394b
rpc: check that version is 2.0 in request objects #25570 (#973)
The JSON-RPC spec requires the "version" field to be exactly "2.0",
so we should verify that. This change is not backwards-compatible with
sloppy client implementations, but I decided to go ahead with it anyway
because the failure will be caught via the returned error.

Co-authored-by: Seungbae Yu <dbadoy4874@gmail.com>
2025-04-24 19:02:33 +08:00
Daniel Liu
2ce0a220a2
cmd, node, rpc: add ReadHeaderTimeout config option #25338 (#972) 2025-04-24 19:01:11 +08:00
Daniel Liu
94b3ca1eeb
all: remove version field #25096 (#970) 2025-04-24 18:55:15 +08:00
Daniel Liu
4fb622bfd0
all: remove public field from rpc.API #25059 (#969) 2025-04-24 18:53:59 +08:00
Daniel Liu
175ef934ed
rpc: remove mention of shh RPC API #25137 (#968) 2025-04-24 18:41:11 +08:00
Daniel Liu
cfd7e241c6
rpc: fix defer in test #24490 (#967) 2025-04-24 18:40:19 +08:00
Daniel Liu
716e58388f
rpc: fix godoc #24488 (#966)
Co-authored-by: s7v7nislands <s7v7nislands@gmail.com>
Co-authored-by: seven <seven@nodereal.io>
2025-04-24 18:38:38 +08:00
Daniel Liu
007314980f
rpc: set Request.GetBody for client requests #24292 (#965)
When talking to an HTTP2 server, there are situations where it needs to
"rewind" the Request.Body. To allow this, we have to set up the Request.GetBody
function to return a brand new instance of the body.

If not set, we can end up with the following error:

    http2: Transport: cannot retry err [http2: Transport received Server's graceful shutdown GOAWAY] after Request.Body was written; define Request.GetBody to avoid this error

See this commit for more information: cffdcf672a

Co-authored-by: Valentin Trinqué <ValentinTrinque@users.noreply.github.com>
2025-04-24 18:37:08 +08:00
Daniel Liu
d751e88fa5
internal/jsre, node, rpc: fix goroutine leaks in tests #24211 (#964) 2025-04-24 18:36:10 +08:00
Daniel Liu
e7ca47c280
rpc: fix time key collision for logger with json output #24112 (#963)
The "t" key overrides the log message time in JSON output.

Co-authored-by: Roman Mazalov <83914728+gopherxyz@users.noreply.github.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 18:35:18 +08:00
Daniel Liu
3a618f0fd2
rpc: linear time batch response matching #23856 (#962)
This avoids quadratic time complexity in the lookup of the batch element
corresponding to an RPC response. Unfortunately, the new approach
requires additional memory for the mapping from ID to index.

Fixes #22805

Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 18:34:12 +08:00
Daniel Liu
de88f30b58
rpc/client: fix typo #23834 (#961)
Co-authored-by: chuwt <weitaochu@gmail.com>
2025-04-24 18:32:44 +08:00
Daniel Liu
a997425b03
all: fix warning of DeepEqual on error #23624 (#960) 2025-04-24 18:31:47 +08:00
Daniel Liu
fae15a51b5
rpc: set pong read deadline #23556 (#959) 2025-04-24 18:22:33 +08:00
Daniel Liu
c789f86542
rpc: implement JSON marshaling of BlockNumber #23324 (#958) 2025-04-24 18:20:03 +08:00
Daniel Liu
9f504a6243
rpc: tighter shutdown synchronization in client subscription #22597 (#955)
This fixes a rare issue where the client subscription forwarding loop
would attempt send on the subscription's channel after Unsubscribe has
returned, leading to a panic if the subscription channel was already
closed by the user. Example:

    sub, _ := client.Subscribe(..., channel, ...)
    sub.Unsubscribe()
    close(channel)

The race occurred because Unsubscribe called quitWithServer to tell the
forwarding loop to stop sending on sub.channel, but did not wait for the
loop to actually come down. This is fixed by adding an additional channel
to track the shutdown, on which Unsubscribe now waits.

Fixes #22322

Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-24 18:17:45 +08:00
Daniel Liu
1f430bcbb1
console: handle eth.coinbase throws #19374 (#953)
* rpc: implement full bi-directional communication #18471

* console: handle eth.coinbase throws #19374

* rpc: remove extra debug log message

* rpc: add go:build lines #23468
2025-04-24 18:11:48 +08:00
Daniel Liu
69323a2dbf
rpc: add HTTPError type for HTTP error responses #22677 (#956)
The new error type is returned by client operations contains details of
the response error code and response body.

Co-authored-by: ryanc414 <ryan@tokencard.io>
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-04-22 15:16:48 +08:00
Ryan Tinianov
76a5008ec7 all: add build tags for wasip1 (#31090) 2025-03-19 18:02:46 +08:00
Daniel Liu
3e4a13d038 rpc: accept finalized as block number 2025-03-19 17:47:52 +08:00
Daniel Liu
4e951ed8fe all: use github.com/deckarep/golang-set/v2 (generic set) (#26159) 2025-01-24 16:54:11 +08:00
Daniel Liu
6ec35b9644 all: get rid of custom MaxUint64 and MaxUint64 (#30636) 2024-12-28 09:06:31 +08:00
Daniel Liu
49b5886150 rpc: fix ns/µs mismatch in metrics (#28649)
The rpc/duration/all meter was in nanoseconds, the individual meter in microseconds.
This PR changes it so both of them use nanoseconds.
2024-12-13 14:00:13 +08:00
Daniel Liu
54570300cc all: ensure resp.body closed (#26969) 2024-12-13 14:00:13 +08:00
Daniel Liu
2e34afe400 rpc: swap out timer metrics to histograms (#25044) 2024-12-13 14:00:12 +08:00
Daniel Liu
d55dca04b5 all: use http package to replace http method names (26535) 2024-12-05 10:59:42 +08:00
Daniel Liu
b76438aafe node: allow WebSocket and HTTP work on same port (#20810) 2024-11-13 09:35:41 +08:00
Daniel Liu
57e5f5ec58 rpc: not log error if user configures --rpcapi=rpc (#20776) 2024-11-13 09:35:41 +08:00
Daniel Liu
fd2b21702c rpc: remove startup error for invalid modules, log it instead (#20684) 2024-11-13 09:35:41 +08:00
Daniel Liu
3f1b7d3a7b rpc: check module availability at startup (#20597) 2024-11-13 09:35:41 +08:00
Daniel Liu
97a5ff616b rpc: Make HTTP server timeout values configurable (#17240) 2024-11-04 12:31:15 +08:00
Daniel Liu
56bce3983d rpc: clean up IPC handler (#16524) 2024-11-04 12:31:15 +08:00
Daniel Liu
6b653a22ad node: fix staticcheck warning SA1019: NewHTTPServer and NewWSServer are deprecated (#16154) 2024-11-04 12:31:15 +08:00
Daniel Liu
206175fb43 all: remove term whitelist in comments and log messages (#23294) 2024-11-01 11:36:52 +08:00
Daniel Liu
2844dbc5a9 rpc: fix staticcheck warning SA1029 by add PeerInfo (#24255) 2024-10-25 12:32:13 +08:00
JukLee0ira
2d89951e5b all: use errrors.New instead of empty fmt.Errorf 2024-06-14 19:19:21 +08:00
JukLee0ira
d6737b69e6 rpc:remove package ethereum/go-ethereum 2024-05-13 19:51:50 +08:00
Daniel Liu
7bd39e6bf9 rpc: add http.TimeoutHandler for http server 2024-03-04 16:33:56 +08:00
Jianrong
7f0215195b fix: update rpc module to include eth fix from #26064 and #26723 2024-01-20 12:21:48 +11:00
Wanwiset Peerapatanapokin
aaa246f60e
PDF-01 (#397)
* replace deprecated ioutil lib calls

* fix for FileInfo type required

* fix for ioutil.Discard

* fix .Discard

* fix for go-bindata generated files
2024-01-19 15:05:03 +04:00
Daniel Liu
6f06a5638b add flag rpcwritetimeout for rpc http server (#358) 2023-11-27 22:48:56 +08:00
Banana-J
39f6e6ee56
upgrade the websocket in xdpos (#349) 2023-11-06 15:37:14 +11:00
Liam
9552500335
xdpos API getV2Block (#227) 2023-03-05 02:17:46 +08:00
span14
c637c7b915 fix switch case issue 2023-01-30 22:22:57 -05:00
span14
abb0dcc48b add confirmed loopup 2023-01-30 22:22:57 -05:00
olumuyiwadad
b5abbfed79 new EVM Upgrade
- Solidity Upgraded up to v0.8.0
-  Fixed and Added eth_chainId
- Fix error in TransactionRecipet
- Reward halving issue fixed
2021-09-21 16:53:46 +05:30
olumuyiwadad
571c41f891 FIx Bad block error. 2021-09-17 17:59:06 +05:30
dev-vadim
dbe8c9d984 upgrade XDC.Network with v1.8.27. 2020-12-23 16:32:06 +05:30
diglspacedavid
474cc37036 upgrade codebase with ethereum:v1.8.13 2020-11-23 13:40:30 +05:30
AnilChinchawale
d3963c816b Enable RPC Endpoint. 2020-03-27 22:24:51 +05:30
parmarrushabh
3e5f4d54a8 Hot_Fix Bad block Error 2019-04-25 12:11:30 +05:30
AnilChinchawale
951ca28d08 fixed params/config.go 2019-03-25 12:47:22 +05:30
AnilChinchawale
22732d57fb Minor Changes added 2019-03-12 15:57:12 +05:30
AnilChinchawale
aa6b2e0323 Enable SendTransaction over RPC. 2019-03-10 15:54:37 +05:30
parmarrushabh
1b13b3a305 hot fix 2019-02-24 17:40:26 +05:30
parmarrushabh
a479343cc7 Implement api eth.getCandidateStatus 2019-02-14 14:59:37 +05:30
AnilChinchawale
107d2837f9 Server RPC updated 2019-02-08 04:52:36 +05:30
Martin Alex Philip Dawson
b025053ab0 rpc: Warn the user when the path name is too long for the Unix ipc endpoint (#18330) 2019-01-02 17:33:17 +01:00
Martin Holst Swende
3796751efc
rpc: add application/json-rpc as accepted content type, fixes #18293 (#18310) 2018-12-14 11:08:11 +01:00
Franklin
3dba6a6d27 remove unrelated code 2018-11-28 22:42:07 +08:00
parmarrushabh
83aba3424e fix empty log error 2018-11-24 17:43:24 +05:30
AnilChinchawale
299a93bc8a fix empty log error 2018-11-22 12:49:50 +05:30
Franklin
21dd59bd04 . 2018-11-20 22:16:40 +08:00
Kenso Trabing
23de6197f9 rpc: fix package doc typo (#18101)
Changed "send" to "send," in two places
2018-11-14 12:21:52 +02:00
Kenso Trabing
698843b45f rpc: fix example typo (#18100)
whishes --> wishes
2018-11-14 12:21:10 +02:00
AnilChinchwale
ed2859171a Disable function send transaction with rpc 2018-10-30 18:33:50 +05:30
Dmitrij Koniajev
6a7695e367 ethdb, rpc: support building on js/wasm (#17709)
The changes allow building WebAssembly applications which use ethclient.Client.
2018-10-16 00:47:25 +02:00
Felix Lange
2e98631c5e
rpc: fix client shutdown hang when Close races with Unsubscribe (#17894)
Fixes #17837
2018-10-15 10:56:04 +02:00
Felix Lange
4e474c74dc
rpc: fix subscription corner case and speed up tests (#17874)
Notifier tracks whether subscription are 'active'. A subscription
becomes active when the subscription ID has been sent to the client. If
the client sends notifications in the request handler before the
subscription becomes active they are dropped. The tests tried to work
around this problem by always waiting 5s before sending the first
notification.

Fix it by buffering notifications until the subscription becomes active.
This speeds up all subscription tests.

Also fix TestSubscriptionMultipleNamespaces to wait for three messages
per subscription instead of six. The test now finishes just after all
notifications have been received and doesn't hit the 30s timeout anymore.
2018-10-09 16:34:24 +02:00
Martin Holst Swende
d3441ebb56
cmd/clef, signer: security fixes (#17554)
* 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
2018-09-25 15:54:58 +02:00
HackyMiner
b66f793443 rpc: increase maxRequestContentLength size to 512kB (#17595) 2018-09-25 12:27:18 +02:00
Peter Broadhurst
c35659c6a0 rpc: enable basic auth for websocket client (#17699) 2018-09-19 18:09:03 +02:00
Gísli Kristjánsson
c9a0b36a5f rpc: reset client write deadline after write (#17549)
This fixes an issue with websocket ping frame handling.
2018-09-03 16:56:30 +02:00
Jay
abbb219933 rpc: fix a subscription name (#17345) 2018-08-09 08:56:35 +03:00
Ryan Schneider
5d7e18539e rpc: make HTTP RPC timeouts configurable, raise defaults (#17240)
* 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
2018-07-31 12:16:14 +03:00
Wenbiao Zheng
68da9aa716 rpc: clean up check for missing methods/subscriptions on handler (#17145) 2018-07-24 02:00:55 +02:00
cong
8997efe31f rpc: fix missing parentheses in doc (#17224) 2018-07-22 22:09:45 +03:00
Ralph Caraveo III
5d30be412b all: switch out defunct set library to different one (#16873)
* keystore, ethash, eth, miner, rpc, whisperv6: tech debt with now defunct set.

* whisperv5: swap out gopkg.in/fatih/set.v0 with supported set
2018-07-16 10:54:19 +03:00
LeoLiao
dbae1dc7b3 rpc: fixed comment grammar issue (#17146) 2018-07-09 11:31:59 +03:00
Elad
1836366ac1 all: library changes for swarm-network-rewrite (#16898)
This commit adds all changes needed for the merge of swarm-network-rewrite.
The changes:

- build: increase linter timeout
- contracts/ens: export ensNode
- log: add Output method and enable fractional seconds in format
- metrics: relax test timeout
- p2p: reduced some log levels, updates to simulation packages
- rpc: increased maxClientSubscriptionBuffer to 20000
2018-06-14 11:21:17 +02:00
Péter Szilágyi
99483e85b9
rpc: support returning nil pointer big.Ints (null) 2018-06-11 13:56:22 +03:00
xincaosu
1d666cf27e rpc: fix a comment typo (#16929) 2018-06-11 12:01:13 +03:00
Martin Holst Swende
17f80cc2e2
rpc: set timeouts for http server, see #16859 2018-06-04 11:41:55 +02:00
Ryan Schneider
c8dcb9584e rpc: use HTTP request context as top-level context (#16861) 2018-06-02 12:26:47 +02:00