Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.

Commit b82a0e4

Browse files
wimspaargarenWim Spaargaren
andauthored
fix: allow specifying end of stream for OnHttpRequestBody & OnHttpRequestHeaders (#83)
Co-authored-by: Wim Spaargaren <[email protected]>
1 parent 44fe076 commit b82a0e4

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

proxytest/http.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,18 +310,28 @@ func (h *httpHostEmulator) HttpFilterInitContext() (contextID uint32) {
310310

311311
// impl HostEmulator
312312
func (h *httpHostEmulator) HttpFilterPutRequestHeaders(contextID uint32, headers [][2]string) {
313+
h.HttpFilterPutRequestHeadersEndOfStream(contextID, headers, false)
314+
}
315+
316+
// impl HostEmulator
317+
func (h *httpHostEmulator) HttpFilterPutRequestHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool) {
313318
cs, ok := h.httpStreams[contextID]
314319
if !ok {
315320
log.Fatalf("invalid context id: %d", contextID)
316321
}
317322

318323
cs.requestHeaders = headers
319324
cs.action = proxywasm.ProxyOnRequestHeaders(contextID,
320-
len(headers), false) // TODO: allow for specifying end_of_stream
325+
len(headers), endOfStream)
321326
}
322327

323328
// impl HostEmulator
324329
func (h *httpHostEmulator) HttpFilterPutResponseHeaders(contextID uint32, headers [][2]string) {
330+
h.HttpFilterPutResponseHeadersEndOfStream(contextID, headers, false)
331+
}
332+
333+
// impl HostEmulator
334+
func (h *httpHostEmulator) HttpFilterPutResponseHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool) {
325335
cs, ok := h.httpStreams[contextID]
326336
if !ok {
327337
log.Fatalf("invalid context id: %d", contextID)
@@ -330,7 +340,7 @@ func (h *httpHostEmulator) HttpFilterPutResponseHeaders(contextID uint32, header
330340
cs.responseHeaders = headers
331341

332342
cs.action = proxywasm.ProxyOnResponseHeaders(contextID,
333-
len(headers), false) // TODO: allow for specifying end_of_stream
343+
len(headers), endOfStream)
334344
}
335345

336346
// impl HostEmulator
@@ -357,16 +367,22 @@ func (h *httpHostEmulator) HttpFilterPutResponseTrailers(contextID uint32, heade
357367

358368
// impl HostEmulator
359369
func (h *httpHostEmulator) HttpFilterPutRequestBody(contextID uint32, body []byte) {
370+
h.HttpFilterPutRequestBodyEndOfStream(contextID, body, false)
371+
}
372+
373+
// impl HostEmulator
374+
func (h *httpHostEmulator) HttpFilterPutRequestBodyEndOfStream(contextID uint32, body []byte, endOfStream bool) {
360375
cs, ok := h.httpStreams[contextID]
361376
if !ok {
362377
log.Fatalf("invalid context id: %d", contextID)
363378
}
364379

365380
cs.requestBody = body
366381
cs.action = proxywasm.ProxyOnRequestBody(contextID,
367-
len(body), false) // TODO: allow for specifying end_of_stream
382+
len(body), endOfStream)
368383
}
369384

385+
// impl HostEmulator
370386
func (h *httpHostEmulator) HttpFilterGetRequestBody(contextID uint32) []byte {
371387
cs, ok := h.httpStreams[contextID]
372388
if !ok {
@@ -378,16 +394,21 @@ func (h *httpHostEmulator) HttpFilterGetRequestBody(contextID uint32) []byte {
378394

379395
// impl HostEmulator
380396
func (h *httpHostEmulator) HttpFilterPutResponseBody(contextID uint32, body []byte) {
397+
h.HttpFilterPutResponseBodyEndOfStream(contextID, body, false)
398+
}
399+
400+
func (h *httpHostEmulator) HttpFilterPutResponseBodyEndOfStream(contextID uint32, body []byte, endOfStream bool) {
381401
cs, ok := h.httpStreams[contextID]
382402
if !ok {
383403
log.Fatalf("invalid context id: %d", contextID)
384404
}
385405

386406
cs.responseBody = body
387407
cs.action = proxywasm.ProxyOnResponseBody(contextID,
388-
len(body), false) // TODO: allow for specifying end_of_stream
408+
len(body), endOfStream)
389409
}
390410

411+
// impl HostEmulator
391412
func (h *httpHostEmulator) HttpFilterGetResponseBody(contextID uint32) []byte {
392413
cs, ok := h.httpStreams[contextID]
393414
if !ok {

proxytest/proxytest.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,16 @@ type HostEmulator interface {
3737
// http
3838
HttpFilterInitContext() (contextID uint32)
3939
HttpFilterPutRequestHeaders(contextID uint32, headers [][2]string)
40+
HttpFilterPutRequestHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool)
4041
HttpFilterPutResponseHeaders(contextID uint32, headers [][2]string)
42+
HttpFilterPutResponseHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool)
4143
HttpFilterPutRequestTrailers(contextID uint32, headers [][2]string)
4244
HttpFilterPutResponseTrailers(contextID uint32, headers [][2]string)
4345
HttpFilterPutRequestBody(contextID uint32, body []byte)
46+
HttpFilterPutRequestBodyEndOfStream(contextID uint32, body []byte, endOfStream bool)
4447
HttpFilterGetRequestBody(contextID uint32) []byte
4548
HttpFilterPutResponseBody(contextID uint32, body []byte)
49+
HttpFilterPutResponseBodyEndOfStream(contextID uint32, body []byte, endOfStream bool)
4650
HttpFilterGetResponseBody(contextID uint32) []byte
4751
HttpFilterCompleteHttpStream(contextID uint32)
4852
HttpFilterGetCurrentStreamAction(contextID uint32) types.Action

0 commit comments

Comments
 (0)