hapijs / hapijs/hapi

No response when payload is large

Open
#4,482 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
JavaScript
Stars
14.8k
Forks
1.4k
Avg merge
22d 3h
Merged PRs (30d)
1

Description

### Runtime

node.js

### Runtime version

16.18.1

### Module version

21.3.3

### Last module version without issue

_No response_

### Used with

_No response_

### Any other relevant information

_No response_

### What are you trying to achieve or the steps to reproduce?

1) Define a strategy
2) Define a post route for uploading large files (e.g. an image)
3) Assign the previously defined strategy to the route
4) Define a form-data client call to load a large file (e.g. 3/4 MB)

Below is the hapi server code to reproduce the error

```
const Hapi = require('@hapi/hapi')
const {unauthorized} = require('@hapi/boom')
const server = Hapi.server({
port: 3000,
host: 'localhost',
})
server.auth.scheme('testScheme', () => {
return {
authenticate: async (request, h) => {
const err = unauthorized('Unauthorized from testScheme')
return h.unauthenticated(err)
}
}
})
async function init() {
server.auth.strategy('testStrategy', 'testScheme')
server.route({
method: 'POST',
path: '/upload',
options: {
auth: {
strategy: 'testStrategy'
},
payload: {
maxBytes: 10 * 1024 * 1024,
output: 'stream',
parse: true,
allow: 'multipart/form-data',
},
},
handler: async (request, h) => {
const { payload } = request
const file = payload.file
const filename = file.hapi.filename
const data = file._data
return h.response({ message: 'File uploaded successfully' })
},
});
await server.start()
console.log('Server running on %s', server.info.uri)
}
process.on('unhandledRejection', (err) => {
console.log(err)
process.exit(1)
})
init()
```

### What was the result you got?

If the defined strategy returns an unauthorized route error, a "no response" is returned to the client

### What result did you expect?

I expect it to return error 401

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.