diff --git a/cache/src/tango_cache_client.cpp b/cache/src/tango_cache_client.cpp index 7010e8b..032ce61 100644 --- a/cache/src/tango_cache_client.cpp +++ b/cache/src/tango_cache_client.cpp @@ -214,7 +214,7 @@ void tango_cache_ctx_destroy(struct tango_cache_ctx *ctx, bool callback) case CACHE_REQUEST_PUT: if(ctx->put.uploadID != NULL) free(ctx->put.uploadID); if(ctx->put.combine_xml != NULL) free(ctx->put.combine_xml); - if(ctx->put.object_meta == NULL) cJSON_Delete(ctx->put.object_meta); + if(ctx->put.object_meta != NULL) cJSON_Delete(ctx->put.object_meta); if(ctx->put.evbuf!=NULL) { ctx->instance->statistic.memory_used -= evbuffer_get_length(ctx->put.evbuf); diff --git a/cache/test/cache_evbase_benchmark.cpp b/cache/test/cache_evbase_benchmark.cpp index d245244..e3744f6 100644 --- a/cache/test/cache_evbase_benchmark.cpp +++ b/cache/test/cache_evbase_benchmark.cpp @@ -320,7 +320,11 @@ static void* thread_transfer_cmd(void *arg) { object_store_update_frag_data(ctx, PUT_MEM_COPY, filecont.buf+(filecont.len-remain_len), remain_len); } - object_store_update_end(ctx, pdata->filename, 256); + if(object_store_update_end(ctx, pdata->filename, 256)) + { + future_destroy(pdata->future); + free(pdata); + } break; case METHOD_HEAD: @@ -343,7 +347,11 @@ static void* thread_transfer_cmd(void *arg) pdata = (struct future_pdata *)malloc(sizeof(struct future_pdata)); pdata->future = future_create(put_future_success, put_future_failed, pdata); - object_store_upload_once_data(instance_asyn, pdata->future, PUT_MEM_FREE, filecont.buf, filecont.len, &putmeta, pdata->filename, 256); + if(object_store_upload_once_data(instance_asyn, pdata->future, PUT_MEM_COPY, filecont.buf, filecont.len, &putmeta, pdata->filename, 256)) + { + future_destroy(pdata->future); + free(pdata); + } break; case METHOD_PUTONCEEV: remain_len = filecont.len; @@ -365,7 +373,11 @@ static void* thread_transfer_cmd(void *arg) { evbuffer_add(evbuf, filecont.buf+(filecont.len-remain_len), remain_len); } - object_store_upload_once_evbuf(instance_asyn, pdata->future, evbuf, &putmeta, pdata->filename, 256); + if(object_store_upload_once_evbuf(instance_asyn, pdata->future, evbuf, &putmeta, pdata->filename, 256)) + { + future_destroy(pdata->future); + free(pdata); + } break; default:break; } @@ -389,7 +401,7 @@ int main(int argc, char **argv) if(argc != 6) { - printf("USAGE: %s \n", argv[0]); + printf("USAGE: %s \n", argv[0]); return -1; } diff --git a/cache/test/tango_cache_test.cpp b/cache/test/tango_cache_test.cpp index 00ba43c..fb7f618 100644 --- a/cache/test/tango_cache_test.cpp +++ b/cache/test/tango_cache_test.cpp @@ -262,7 +262,10 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg) pdata = (struct future_pdata *)malloc(sizeof(struct future_pdata)); pdata->future = future_create(put_future_success, put_future_failed, pdata); - tango_cache_upload_once_data(tango_instance, pdata->future, PUT_MEM_FREE, p, filelen, &putmeta, pdata->filename, 256); + if(tango_cache_upload_once_data(tango_instance, pdata->future, PUT_MEM_FREE, p, filelen, &putmeta, pdata->filename, 256)) + { + put_future_failed(FUTURE_ERROR_CANCEL, "", pdata); + } } else if(!strcasecmp(p, "PUTONCEEV")) { @@ -283,7 +286,10 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg) evbuffer_add(evbuf, buffer, readlen); } fclose(fp); - tango_cache_upload_once_evbuf(tango_instance, pdata->future, EVBUFFER_MOVE, evbuf, &putmeta, pdata->filename, 256); + if(tango_cache_upload_once_evbuf(tango_instance, pdata->future, EVBUFFER_MOVE, evbuf, &putmeta, pdata->filename, 256)) + { + put_future_failed(FUTURE_ERROR_CANCEL, "", pdata); + } } else if(!strcasecmp(p, "DEL")) { @@ -323,7 +329,10 @@ static void dummy_accept_callback(evutil_socket_t fd, short events, void *arg) tango_cache_update_frag_data(ctx, buffer, n); } fclose(fp); - tango_cache_update_end(ctx, pdata->filename, 256); + if(tango_cache_update_end(ctx, pdata->filename, 256)) + { + put_future_failed(FUTURE_ERROR_CANCEL, "", pdata); + } } } else