Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: have http.request() accept socket timeout option which is passed to http.Agent and applied BEFORE connecting #7580

Closed
rogierschouten opened this issue Jul 7, 2016 · 1 comment
Labels
feature request Issues that request new features to be added to Node.js. http Issues or PRs related to the http subsystem.

Comments

@rogierschouten
Copy link

  • Version: v6.2.2
  • Platform: Windows 7 64-bit
  • Subsystem:

For plain socket ('net' module) it is possible to set the socket connect timeout by using socket#setTimeout() before calling socket#connect(). On windows, this has effect as long as you keep the timeout below 20 seconds (which is the Windows default TCP connect timeout). E.g. setting 1 second and then connecting to a non-existing IP address will give a timeout after 1 second, but setting 25 seconds will still timeout after 20 seconds.

For the http module, there is no such option (http.request() does not take a timeout). There are no workarounds: using ClientRequest#setTimeout() or catching the socket in the on('socket') event and using socket#setTimeout both result in the timeout being set after the connect() call, so it does not function as a connect timeout.

So the request is to adjust http.request() function so that it takes a timeout option which is set on the socket before it connects. This will in turn require passing on the timeout to the http.Agent#createConnection() when requesting a connection.

@Fishrock123 Fishrock123 added http Issues or PRs related to the http subsystem. feature request Issues that request new features to be added to Node.js. labels Jul 7, 2016
@orangemocha
Copy link
Contributor

Thanks for bringing this issue to our attention. The request seems reasonable. Would you be able to open a pull request for this? Otherwise, I have added this to my backlog, but it might take some time for me to get to it.

reneweb added a commit to reneweb/node that referenced this issue Aug 31, 2016
This allows passing the socket connection timeout to http#request
such that it will be set before the socket is connecting

Fixes nodejs#7580
jasnell pushed a commit that referenced this issue Sep 29, 2016
This allows passing the socket connection timeout to http#request
such that it will be set before the socket is connecting

PR-URL: #8101
Fixes: #7580
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
geek pushed a commit to geek/node that referenced this issue Sep 30, 2016
This allows passing the socket connection timeout to http#request
such that it will be set before the socket is connecting

PR-URL: nodejs#8101
Fixes: nodejs#7580
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
Fishrock123 pushed a commit that referenced this issue Oct 11, 2016
This allows passing the socket connection timeout to http#request
such that it will be set before the socket is connecting

PR-URL: #8101
Fixes: #7580
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Issues that request new features to be added to Node.js. http Issues or PRs related to the http subsystem.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants