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
This commit is contained in:
Daniel Stenberg
2013-02-08 13:48:56 +01:00
parent 07f97809b8
commit 72688317ad
5 changed files with 231 additions and 2 deletions

View File

@@ -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);