Skip to content

Commit fe4cf97

Browse files
authored
Improved request content type parsing (#708)
1 parent 2c6e8f9 commit fe4cf97

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

services/api/service.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,7 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request)
14451445

14461446
// Determine what encoding the proposer sent
14471447
proposerContentType := req.Header.Get(HeaderContentType)
1448-
parsedProposerContentType, _, err := mime.ParseMediaType(proposerContentType)
1448+
proposerContentType, _, err = mime.ParseMediaType(proposerContentType)
14491449
if err != nil {
14501450
api.log.WithError(err).Error("failed to parse proposer content type")
14511451
api.RespondError(w, http.StatusUnsupportedMediaType, err.Error())
@@ -1468,7 +1468,7 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request)
14681468
"idArg": req.URL.Query().Get("id"),
14691469
"timestampRequestStart": receivedAt.UnixMilli(),
14701470
"negotiatedResponseMediaType": negotiatedResponseMediaType,
1471-
"parsedProposerContentType": parsedProposerContentType,
1471+
"proposerContentType": proposerContentType,
14721472
"proposerEthConsensusVersion": proposerEthConsensusVersion,
14731473
})
14741474

@@ -1503,7 +1503,7 @@ func (api *RelayAPI) handleGetPayload(w http.ResponseWriter, req *http.Request)
15031503

15041504
// Decode payload
15051505
payload := new(common.VersionedSignedBlindedBeaconBlock)
1506-
err = payload.Unmarshal(body, parsedProposerContentType, proposerEthConsensusVersion)
1506+
err = payload.Unmarshal(body, proposerContentType, proposerEthConsensusVersion)
15071507
if err != nil {
15081508
log.WithError(err).Warn("failed to decode getPayload request")
15091509
api.RespondError(w, http.StatusBadRequest, "failed to decode payload")
@@ -2185,7 +2185,13 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque
21852185
payload := new(common.VersionedSubmitBlockRequest)
21862186

21872187
// Check for SSZ encoding
2188-
contentType := req.Header.Get(HeaderContentType)
2188+
contentType, _, err := getHeaderContentType(req.Header)
2189+
if err != nil {
2190+
api.log.WithError(err).Error("failed to parse proposer content type")
2191+
api.RespondError(w, http.StatusUnsupportedMediaType, err.Error())
2192+
return
2193+
}
2194+
21892195
if contentType == ApplicationOctetStream {
21902196
log = log.WithField("reqContentType", "ssz")
21912197
pf.ContentType = "ssz"

0 commit comments

Comments
 (0)