rahulramesha / http2-express-bridge

wrapper for express app to work with http2 protocol
MIT License
31 stars 6 forks source link

Error when requesting with HTTP 2.0 on HTTP 1 port #5

Open zefir-git opened 2 years ago

zefir-git commented 2 years ago

Module version: 1.0.7 Express version: 4.17.1 Node version: 16.13.0

An error is triggered when sending a raw HTTP/2.0 request with telnet on HTTP/1.1 port (80)

telnet example.com 80
GET / HTTP/2.0
Host: example.com

Error thrown within Node.js:

/node_modules/http2-express-bridge/lib/bridge.js:53
      } = req.httpVersion === '2.0' ? req.stream.session : req; //Checking alpnProtocol for http2
                                                 ^

TypeError: Cannot read properties of undefined (reading 'session')
    at Server.app (/node_modules/http2-express-bridge/lib/bridge.js:53:50)
    at Server.emit (node:events:390:28)
    at Server.emit (node:domain:475:12)
    at parserOnIncoming (node:_http_server:951:12)
    at HTTPParser.parserOnHeadersComplete (node:_http_common:128:17)

The error appears to be triggered here: https://github.com/rahulramesha/http2-express-bridge/blob/76b699e4385946b8c6fccacd45eac0577e24b66c/src/bridge.js#L27

How can this error be handled? I feel like I should send back 400 to the client.

ugurberkecan commented 1 year ago

any update ?