@@ -358,7 +358,11 @@ internal struct LambdaHTTPServer {
358
358
// client POST /invoke
359
359
case ( . POST, let url) where url. hasSuffix ( self . invocationEndpoint) :
360
360
guard let body else {
361
- return try await sendResponse ( . init( status: . badRequest) , outbound: outbound, logger: logger)
361
+ return try await sendResponse (
362
+ . init( status: . badRequest, final: true ) ,
363
+ outbound: outbound,
364
+ logger: logger
365
+ )
362
366
}
363
367
// we always accept the /invoke request and push them to the pool
364
368
let requestId = " \( DispatchTime . now ( ) . uptimeNanoseconds) "
@@ -394,7 +398,11 @@ internal struct LambdaHTTPServer {
394
398
395
399
// client uses incorrect HTTP method
396
400
case ( _, let url) where url. hasSuffix ( self . invocationEndpoint) :
397
- return try await sendResponse ( . init( status: . methodNotAllowed) , outbound: outbound, logger: logger)
401
+ return try await sendResponse (
402
+ . init( status: . methodNotAllowed, final: true ) ,
403
+ outbound: outbound,
404
+ logger: logger
405
+ )
398
406
399
407
//
400
408
// lambda invocations
@@ -420,7 +428,11 @@ internal struct LambdaHTTPServer {
420
428
case ( . POST, let url) where url. hasSuffix ( Consts . postResponseURLSuffix) :
421
429
guard let requestId = getRequestId ( from: head) else {
422
430
// the request is malformed, since we were expecting a requestId in the path
423
- return try await sendResponse ( . init( status: . badRequest) , outbound: outbound, logger: logger)
431
+ return try await sendResponse (
432
+ . init( status: . badRequest, final: true ) ,
433
+ outbound: outbound,
434
+ logger: logger
435
+ )
424
436
}
425
437
// enqueue the lambda function response to be served as response to the client /invoke
426
438
logger. trace ( " /:requestId/response received response " , metadata: [ " requestId " : " \( requestId) " ] )
@@ -435,14 +447,22 @@ internal struct LambdaHTTPServer {
435
447
)
436
448
437
449
// tell the Lambda function we accepted the response
438
- return try await sendResponse ( . init( id: requestId, status: . accepted, final: true ) , outbound: outbound, logger: logger)
450
+ return try await sendResponse (
451
+ . init( id: requestId, status: . accepted, final: true ) ,
452
+ outbound: outbound,
453
+ logger: logger
454
+ )
439
455
440
456
// :requestId/error endpoint is called by the lambda posting an error response
441
457
// we accept all requestId and we do not handle the body, we just acknowledge the request
442
458
case ( . POST, let url) where url. hasSuffix ( Consts . postErrorURLSuffix) :
443
459
guard let requestId = getRequestId ( from: head) else {
444
460
// the request is malformed, since we were expecting a requestId in the path
445
- return try await sendResponse ( . init( status: . badRequest) , outbound: outbound, logger: logger)
461
+ return try await sendResponse (
462
+ . init( status: . badRequest, final: true ) ,
463
+ outbound: outbound,
464
+ logger: logger
465
+ )
446
466
}
447
467
// enqueue the lambda function response to be served as response to the client /invoke
448
468
logger. trace ( " /:requestId/response received response " , metadata: [ " requestId " : " \( requestId) " ] )
@@ -451,15 +471,16 @@ internal struct LambdaHTTPServer {
451
471
id: requestId,
452
472
status: . internalServerError,
453
473
headers: HTTPHeaders ( [ ( " Content-Type " , " application/json " ) ] ) ,
454
- body: body
474
+ body: body,
475
+ final: true
455
476
)
456
477
)
457
478
458
- return try await sendResponse ( . init( status: . accepted) , outbound: outbound, logger: logger)
479
+ return try await sendResponse ( . init( status: . accepted, final : true ) , outbound: outbound, logger: logger)
459
480
460
481
// unknown call
461
482
default :
462
- return try await sendResponse ( . init( status: . notFound) , outbound: outbound, logger: logger)
483
+ return try await sendResponse ( . init( status: . notFound, final : true ) , outbound: outbound, logger: logger)
463
484
}
464
485
}
465
486
0 commit comments