aboutsummaryrefslogtreecommitdiff
path: root/lib/transfer.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/transfer.c')
-rw-r--r--lib/transfer.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 77146dd6e..512eceff0 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -245,11 +245,20 @@ CURLcode Curl_readrewind(struct connectdata *conn)
(data->set.httpreq == HTTPREQ_POST_FORM))
; /* do nothing */
else {
- if(data->set.ioctl_func) {
+ if(data->set.seek_func) {
+ int err;
+
+ err = (data->set.seek_func)(data->set.seek_client, 0, SEEK_SET);
+ if(err) {
+ failf(data, "seek callback returned error %d\n", (int)err);
+ return CURLE_SEND_FAIL_REWIND;
+ }
+ }
+ else if(data->set.ioctl_func) {
curlioerr err;
- err = (data->set.ioctl_func) (data, CURLIOCMD_RESTARTREAD,
- data->set.ioctl_client);
+ err = (data->set.ioctl_func)(data, CURLIOCMD_RESTARTREAD,
+ data->set.ioctl_client);
infof(data, "the ioctl callback returned %d\n", (int)err);
if(err) {