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

Question: How to set curl options for HTTP from inside dmd? #10359

Open
dlangBugzillaToGithub opened this issue Nov 9, 2018 · 1 comment
Open

Comments

@dlangBugzillaToGithub
Copy link

alex.braunegg reported this on 2018-11-09T23:07:57Z

Transfered from https://issues.dlang.org/show_bug.cgi?id=19385

Description

Hi,

In Curl 7.62.0, this now defaults to using HTTP 2.0 for connections where h2 is available, when build with h2 support. 

Is there a way to set the libcurl options to force http 1.1 for all connections rather than using 'no flag' which lets libcurl choose the connection mechanism?

I have tried the following:

import std.net.curl;
http = HTTP();
http.handle.set(CurlOption.http_version,"v1_1");

However this generates the following error:

std.net.curl.CurlException@std/net/curl.d(4340): Unsupported protocol on handle 555E47E726A0

Can anyone advise how to set the curl options so that I can tell the library to only use http 1.1?

The issue I am trying to solve is - when DMD is using HTTP2 for file downloads, 'something' is happening when the file download is being completed which is causing an error - as the file 'disappears'. When downgrading the curl library to 7.61.0 (which does not enable http2 by default) there is no issue.

References: 
https://dlang.org/library/etc/c/curl/curl_http_version.html
https://github.com/abraunegg/onedrive/issues/220
https://github.com/curl/curl/issues/3253
@dlangBugzillaToGithub
Copy link
Author

dfj1esp02 commented on 2018-11-12T13:14:11Z

See issue 19367 - until 8 november phobos didn't support http2, you're getting http status 0 and throw an exception for it, you also have a scope guard that deletes the file if exception is thrown, that exception is later caught and ignored, that's why you don't see anything happening. It's a good idea to log exception in its constructor - as soon as possible - this way you have little chance to ignore it, it's a life saver in remote debugging.

@LightBender LightBender removed the P4 label Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants