File tree Expand file tree Collapse file tree 3 files changed +54
-3
lines changed Expand file tree Collapse file tree 3 files changed +54
-3
lines changed Original file line number Diff line number Diff line change @@ -5,11 +5,14 @@ import {
5
5
preHandlerHookHandler
6
6
} from "fastify" ;
7
7
8
- export interface FastifyHttpProxyOptions {
8
+ import {
9
+ FastifyReplyFromOptions
10
+ } from "fastify-reply-from"
11
+
12
+ export interface FastifyHttpProxyOptions extends FastifyReplyFromOptions {
9
13
upstream : string ;
10
14
prefix ?: string ;
11
15
rewritePrefix ?: string ;
12
- http2 ?: boolean ;
13
16
proxyPayloads ?: boolean ;
14
17
preHandler ?: preHandlerHookHandler ;
15
18
beforeHandler ?: preHandlerHookHandler ;
Original file line number Diff line number Diff line change @@ -22,5 +22,21 @@ app.register(fastifyHttpProxy, {
22
22
beforeHandler : ( request , reply ) => {
23
23
expectType < RawRequestDefaultExpression > ( request . raw ) ;
24
24
expectType < RawReplyDefaultExpression > ( reply . raw ) ;
25
- }
25
+ } ,
26
+ base : 'whatever' ,
27
+ cacheURLs : 10 ,
28
+ undici : { dummy : true } , // undici has no TS declarations yet
29
+ http : {
30
+ agentOptions : {
31
+ keepAliveMsecs : 10 * 60 * 1000
32
+ } ,
33
+ requestOptions : {
34
+ timeout : 20000
35
+ }
36
+ } ,
37
+ keepAliveMsecs : 60000 ,
38
+ maxFreeSockets : 10 ,
39
+ maxSockets : 20 ,
40
+ rejectUnauthorized : true ,
41
+ sessionTimeout : 30000
26
42
} ) ;
Original file line number Diff line number Diff line change @@ -29,6 +29,11 @@ async function run () {
29
29
return 'this is /api2/a'
30
30
} )
31
31
32
+ origin . get ( '/timeout' , async ( request , reply ) => {
33
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 600 ) )
34
+ return 'this is never received'
35
+ } )
36
+
32
37
await origin . listen ( 0 )
33
38
34
39
tearDown ( origin . close . bind ( origin ) )
@@ -373,6 +378,33 @@ async function run () {
373
378
)
374
379
t . equal ( location , '/something' )
375
380
} )
381
+
382
+ test ( 'proxy request timeout' , async t => {
383
+ const server = Fastify ( )
384
+ server . register ( proxy , {
385
+ upstream : `http://localhost:${ origin . server . address ( ) . port } ` ,
386
+ http : {
387
+ requestOptions : {
388
+ timeout : 300
389
+ }
390
+ }
391
+ } )
392
+
393
+ await server . listen ( 0 )
394
+ t . tearDown ( server . close . bind ( server ) )
395
+
396
+ try {
397
+ await got (
398
+ `http://localhost:${ server . server . address ( ) . port } /timeout` ,
399
+ { retry : 0 }
400
+ )
401
+ } catch ( err ) {
402
+ t . equal ( err . response . statusCode , 504 )
403
+ t . equal ( err . response . statusMessage , 'Gateway Timeout' )
404
+ return
405
+ }
406
+ t . fail ( )
407
+ } )
376
408
}
377
409
378
410
run ( )
You can’t perform that action at this time.
0 commit comments