summaryrefslogtreecommitdiff
path: root/client/doris_client_transfer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client/doris_client_transfer.cpp')
-rw-r--r--client/doris_client_transfer.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/client/doris_client_transfer.cpp b/client/doris_client_transfer.cpp
index b0edcf2..a71313f 100644
--- a/client/doris_client_transfer.cpp
+++ b/client/doris_client_transfer.cpp
@@ -153,6 +153,46 @@ void doris_http_ctx_add_header_kvint(struct doris_http_ctx *ctx, const char *hea
ctx->headers = curl_slist_append(ctx->headers, header);
}
+int doris_http_launch_head_request(struct doris_http_ctx *ctx, const char *uri)
+{
+ char minio_url[2048];
+
+ assert(ctx->curl == NULL);
+ if(NULL == (ctx->curl=curl_easy_init()))
+ {
+ assert(0);return -1;
+ }
+
+ curl_easy_setopt(ctx->curl, CURLOPT_NOBODY, 1L); //HEAD����
+ if(ctx->instance->param->ssl_connection)
+ {
+ snprintf(minio_url, sizeof(minio_url), "https://%s/%s", ctx->multidata->host->srvaddr, uri);
+ curl_easy_setopt(ctx->curl, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(ctx->curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ }
+ else
+ {
+ snprintf(minio_url, sizeof(minio_url), "http://%s/%s", ctx->multidata->host->srvaddr, uri);
+ }
+ curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url);
+
+ if(ctx->headers != NULL)
+ {
+ curl_easy_setopt(ctx->curl, CURLOPT_HTTPHEADER, ctx->headers);
+ }
+ curl_easy_setopt(ctx->curl, CURLOPT_HEADERFUNCTION, curl_response_header_cb);
+ curl_easy_setopt(ctx->curl, CURLOPT_HEADERDATA, ctx);
+ curl_easy_setopt(ctx->curl, CURLOPT_PRIVATE, ctx);
+ curl_set_common_options(ctx->curl, ctx->instance->param->transfer_timeout, ctx->error);
+
+ if(CURLM_OK != curl_multi_add_handle(ctx->multidata->multi_hd, ctx->curl))
+ {
+ assert(0); return -2;
+ }
+ ctx->transfering = 1;
+ return 0;
+}
+
int doris_http_launch_get_request(struct doris_http_ctx *ctx, const char *uri)
{
char minio_url[2048];