From 72688317adcedb9508fd2189e6c6d3945e06a004 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 8 Feb 2013 13:48:56 +0100 Subject: DONE: consider callback-aborted transfers premature This bug report properly identified that when doing SMTP and aborting the transfer with a callback, it must be considered aborted prematurely by the code to avoid QUIT etc to be attempted as that would cause a hang. The new test case 1507 verifies this behavior. Reported by: Patricia Muscalu Bug: http://curl.haxx.se/bug/view.cgi?id=1184 --- lib/url.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib') diff --git a/lib/url.c b/lib/url.c index 918ce58c3..df70b69da 100644 --- a/lib/url.c +++ b/lib/url.c @@ -5219,6 +5219,13 @@ CURLcode Curl_done(struct connectdata **connp, conn->dns_entry = NULL; } + if(status == CURLE_ABORTED_BY_CALLBACK) + /* When we're aborted due to a callback return code it basically have to + be counted as premature as there is trouble ahead if we don't. We have + many callbacks and protocols work differently, we could potentially do + this more fine-grained in the future. */ + premature = TRUE; + /* this calls the protocol-specific function pointer previously set */ if(conn->handler->done) result = conn->handler->done(conn, status, premature); -- cgit v1.2.3