From 8a0223e8da596a409df02c11027320df97327e83 Mon Sep 17 00:00:00 2001 From: cui Date: Fri, 15 May 2026 21:51:46 +0800 Subject: [PATCH 1/3] core/txpool: use blobTxForPool inside of `Reset` function (#34960) This PR fixes a bug in the current blobpool `Reset` function where it used the Transaction type instead of blobTxForPool. Decoding transactions fetched from the pool as Transaction type caused an error because the blobpool stores blobTxForPool types. --- core/txpool/blobpool/blobpool.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/txpool/blobpool/blobpool.go b/core/txpool/blobpool/blobpool.go index 3b2bc03422..d33629365f 100644 --- a/core/txpool/blobpool/blobpool.go +++ b/core/txpool/blobpool/blobpool.go @@ -1107,13 +1107,13 @@ func (p *BlobPool) Reset(oldHead, newHead *types.Header) { log.Error("Blobs missing for announcable transaction", "from", addr, "nonce", meta.nonce, "id", meta.id, "err", err) continue } - var tx types.Transaction - if err = rlp.DecodeBytes(data, &tx); err != nil { + var ptx blobTxForPool + if err = rlp.DecodeBytes(data, &ptx); err != nil { log.Error("Blobs corrupted for announcable transaction", "from", addr, "nonce", meta.nonce, "id", meta.id, "err", err) continue } - announcable = append(announcable, tx.WithoutBlobTxSidecar()) - log.Trace("Blob transaction now announcable", "from", addr, "nonce", meta.nonce, "id", meta.id, "hash", tx.Hash()) + announcable = append(announcable, ptx.Tx) + log.Trace("Blob transaction now announcable", "from", addr, "nonce", meta.nonce, "id", meta.id, "hash", ptx.Tx.Hash()) } } } From d4027f3d4654b374b0962946b03d6f12e3b269ee Mon Sep 17 00:00:00 2001 From: Andrii Furmanets Date: Mon, 18 May 2026 05:37:12 +0300 Subject: [PATCH 2/3] node: normalize HTTP vhost host matching (#34693) --- node/rpcstack.go | 1 + node/rpcstack_test.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/node/rpcstack.go b/node/rpcstack.go index 20d488b734..1db2ed3f44 100644 --- a/node/rpcstack.go +++ b/node/rpcstack.go @@ -463,6 +463,7 @@ func (h *virtualHostHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // Either invalid (too many colons) or no port specified host = r.Host } + host = strings.ToLower(host) if ipAddr := net.ParseIP(host); ipAddr != nil { // It's an IP address, we can serve that h.next.ServeHTTP(w, r) diff --git a/node/rpcstack_test.go b/node/rpcstack_test.go index bd75dac4eb..f5668abb08 100644 --- a/node/rpcstack_test.go +++ b/node/rpcstack_test.go @@ -60,6 +60,9 @@ func TestVhosts(t *testing.T) { resp := rpcRequest(t, url, testMethod, "host", "test") assert.Equal(t, resp.StatusCode, http.StatusOK) + respUpper := rpcRequest(t, url, testMethod, "host", "TeSt:1234") + assert.Equal(t, respUpper.StatusCode, http.StatusOK) + resp2 := rpcRequest(t, url, testMethod, "host", "bad") assert.Equal(t, resp2.StatusCode, http.StatusForbidden) } From 3d1e6aa6c395540126b93dd936f39e16e72fc47f Mon Sep 17 00:00:00 2001 From: cui Date: Mon, 18 May 2026 22:30:41 +0800 Subject: [PATCH 3/3] signer/core: fix unconditional http request metadata scheme overwrite (#34653) --- signer/core/api.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/signer/core/api.go b/signer/core/api.go index 12acf925f0..3b7b53a312 100644 --- a/signer/core/api.go +++ b/signer/core/api.go @@ -196,8 +196,9 @@ func MetadataFromContext(ctx context.Context) Metadata { if info.Transport != "" { if info.Transport == "http" { m.Scheme = info.HTTP.Version + } else { + m.Scheme = info.Transport } - m.Scheme = info.Transport } if info.RemoteAddr != "" { m.Remote = info.RemoteAddr