diff --git a/cache/src/tango_cache_client.cpp b/cache/src/tango_cache_client.cpp index c04bb37..aff5442 100644 --- a/cache/src/tango_cache_client.cpp +++ b/cache/src/tango_cache_client.cpp @@ -260,7 +260,6 @@ void tango_cache_update_end(struct tango_cache_ctx *ctx) void tango_cache_update_cancel(struct tango_cache_ctx *ctx) { - ctx->put.close_state = true; if(ctx->curl != NULL) { curl_multi_remove_handle(ctx->instance->multi_hd, ctx->curl); @@ -271,7 +270,7 @@ void tango_cache_update_cancel(struct tango_cache_ctx *ctx) //已经产生分段上传ID时,调用cancel删除 if(ctx->put.uploadID!=NULL && cache_cancel_upload_minio(ctx)) { - ctx->put.state = PUT_STATE_CANCEL; + ctx->put.state = PUT_STATE_USER_CANCEL; } else { diff --git a/cache/src/tango_cache_client_in.h b/cache/src/tango_cache_client_in.h index 8a76868..258900c 100644 --- a/cache/src/tango_cache_client_in.h +++ b/cache/src/tango_cache_client_in.h @@ -40,7 +40,8 @@ enum PUT_OBJECT_STATE PUT_STATE_WAIT_START, PUT_STATE_PART, PUT_STATE_END, - PUT_STATE_CANCEL, + PUT_STATE_ERR_CANCEL, + PUT_STATE_USER_CANCEL, }; struct easy_string diff --git a/cache/src/tango_cache_transfer.cpp b/cache/src/tango_cache_transfer.cpp index f744f25..02aa1f0 100644 --- a/cache/src/tango_cache_transfer.cpp +++ b/cache/src/tango_cache_transfer.cpp @@ -380,7 +380,7 @@ void cache_kick_upload_minio_end(struct tango_cache_ctx *ctx) tango_cache_set_fail_state(ctx, CACHE_ERR_CURL); if(cache_cancel_upload_minio(ctx)) { - ctx->put.state = PUT_STATE_CANCEL; + ctx->put.state = PUT_STATE_ERR_CANCEL; } else { @@ -439,7 +439,7 @@ void tango_cache_curl_put_done(struct tango_cache_ctx *ctx, CURLcode res, long r { if(cache_cancel_upload_minio(ctx)) { - ctx->put.state = PUT_STATE_CANCEL; + ctx->put.state = PUT_STATE_ERR_CANCEL; } else if(ctx->put.close_state) { @@ -460,12 +460,15 @@ void tango_cache_curl_put_done(struct tango_cache_ctx *ctx, CURLcode res, long r } break; - case PUT_STATE_CANCEL: //等待关闭 + case PUT_STATE_ERR_CANCEL: //等待关闭 if(ctx->put.close_state) { tango_cache_ctx_destroy(ctx); } break; + case PUT_STATE_USER_CANCEL: + tango_cache_ctx_destroy(ctx, false); + break; case PUT_STATE_END: if(res != CURLE_OK || res_code!=200L)