The official libcurl solution to abort a running HTTP request is to return a non-zero value from the onProgress callback (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTPROGRESSFUNCTION). The problem is that std.net.curl will throw an unspecific CurlException, so the API offers no way to handle that error. ---- import std.net.curl; void main() { auto http = HTTP("www.example.com"); http.onProgress = (dltot, dlnow, ultot, ulnow) { if (dlnow > 1024) return 1; return 0; }; http.perform(); } ---- std.net.curl.CurlException@std/net/curl.d(3592): Operation was aborted by an application callback on handle 1C94B00 ---- I think allowing to pass a boolean to perform() so it returns the error code instead of throwing an error would be a good solution. Note that this is already possible for Curl.perform but not with HTTP.perform, FTP.perform or SMTP.perform. http://dlang.org/phobos/std_net_curl.html#.Curl.perform http://dlang.org/phobos/std_net_curl.html#.HTTP.perform http://dlang.org/phobos/std_net_curl.html#.FTP.perform http://dlang.org/phobos/std_net_curl.html#.SMTP.perform
> Note that this is already possible for Curl.perform but not with HTTP.perform, FTP.perform or SMTP.perform. Shouldn't this be closed since all of mentioned `perform` functions accept `ThrowOnError` attribute?
(In reply to sigod from comment #1) > Shouldn't this be closed since all of mentioned `perform` functions accept > `ThrowOnError` attribute? Martin, ping, is this still actionable?
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/10061 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB