Bug 12895 – std.net.curl doesn't allow to abort a request

Status
NEW
Severity
enhancement
Priority
P4
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-06-12T00:16:10Z
Last change time
2024-12-01T16:21:26Z
Assigned to
Jonas Drewsen
Creator
Martin Nowak
Moved to GitHub: phobos#10061 →

Comments

Comment #0 by code — 2014-06-12T00:16:10Z
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
Comment #1 by sigod.mail — 2015-10-19T21:16:49Z
> 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?
Comment #2 by dlang-bugzilla — 2017-07-02T02:42:46Z
(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?
Comment #3 by robert.schadek — 2024-12-01T16:21:26Z
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