@@ -58,6 +58,7 @@ func (s *StreamingServer) Process(srv extProcPb.ExternalProcessor_ProcessServer)
58
58
var body []byte
59
59
60
60
var requestBody , responseBody map [string ]interface {}
61
+
61
62
// Create error handling var as each request should only report once for
62
63
// error metrics. This doesn't cover the error "Cannot receive stream request" because
63
64
// such errors might happen even though response is processed.
@@ -91,7 +92,18 @@ func (s *StreamingServer) Process(srv extProcPb.ExternalProcessor_ProcessServer)
91
92
switch v := req .Request .(type ) {
92
93
case * extProcPb.ProcessingRequest_RequestHeaders :
93
94
reqCtx .RequestReceivedTimestamp = time .Now ()
94
- // Do nothing. Header info is handled in the HandleRequestBody func
95
+ for _ , h := range v .RequestHeaders .Headers .GetHeaders () {
96
+ loggerVerbose .Info ("Headers" , "Key" , h .Key , "val" , string (h .RawValue ))
97
+ if h .Key == "content-length" {
98
+ contentLength , err = strconv .Atoi (string (h .RawValue ))
99
+ if err != nil {
100
+ logger .Error (err , "an error occurred casting the content length header to int" )
101
+ }
102
+ }
103
+ }
104
+ if contentLength == 0 && ! v .RequestHeaders .EndOfStream {
105
+ err = errutil.Error {Code : errutil .BadRequest , Msg : "Inference Gateway requires a content-length header to be sent to the ext-proc" }
106
+ }
95
107
case * extProcPb.ProcessingRequest_RequestBody :
96
108
loggerVerbose .Info ("Incoming body chunk" , "body" , string (v .RequestBody .Body ), "EoS" , v .RequestBody .EndOfStream )
97
109
// In the stream case, we can receive multiple request bodies.
0 commit comments