diff --git a/src/cli.c b/src/cli.c index d2c97ae..a3b0a3d 100644 --- a/src/cli.c +++ b/src/cli.c @@ -81,6 +81,11 @@ void web_args_destroy(web_args_t *args) { } void exec_args_destroy(exec_args_t *args) { + + if (args->index_path != NULL) { + free(args->index_path); + } + free(args); } diff --git a/src/cli.h b/src/cli.h index cdf22b6..e830a41 100644 --- a/src/cli.h +++ b/src/cli.h @@ -85,7 +85,7 @@ typedef struct web_args { typedef struct exec_args { char *es_url; char *es_index; - const char *index_path; + char *index_path; const char *script_path; int async_script; char *script; diff --git a/src/index/elastic.c b/src/index/elastic.c index 4ec2360..bb22321 100644 --- a/src/index/elastic.c +++ b/src/index/elastic.c @@ -110,16 +110,16 @@ void execute_update_script(const char *script, int async, const char index_id[SI cJSON *term_obj = cJSON_AddObjectToObject(query, "term"); cJSON_AddStringToObject(term_obj, "index", index_id); - char *str = cJSON_Print(body); + char *str = cJSON_PrintUnformatted(body); - char bulk_url[4096]; + char url[4096]; if (async) { - snprintf(bulk_url, sizeof(bulk_url), "%s/%s/_update_by_query?wait_for_completion=false", Indexer->es_url, + snprintf(url, sizeof(url), "%s/%s/_update_by_query?wait_for_completion=false", Indexer->es_url, Indexer->es_index); } else { - snprintf(bulk_url, sizeof(bulk_url), "%s/%s/_update_by_query", Indexer->es_url, Indexer->es_index); + snprintf(url, sizeof(url), "%s/%s/_update_by_query", Indexer->es_url, Indexer->es_index); } - response_t *r = web_post(bulk_url, str); + response_t *r = web_post(url, str); if (!async) { LOG_INFOF("elastic.c", "Executed user script <%d>", r->status_code); } diff --git a/src/index/web.c b/src/index/web.c index b6cc992..b9aa7a2 100644 --- a/src/index/web.c +++ b/src/index/web.c @@ -22,7 +22,7 @@ void free_response(response_t *resp) { free(resp); } -void web_post_async_poll(subreq_ctx_t* req) { +void web_post_async_poll(subreq_ctx_t *req) { fd_set fdread; fd_set fdwrite; fd_set fdexcep; @@ -34,7 +34,7 @@ void web_post_async_poll(subreq_ctx_t* req) { CURLMcode mc = curl_multi_fdset(req->multi, &fdread, &fdwrite, &fdexcep, &maxfd); - if(mc != CURLM_OK) { + if (mc != CURLM_OK) { req->done = TRUE; return; } @@ -47,7 +47,7 @@ void web_post_async_poll(subreq_ctx_t* req) { struct timeval timeout = {1, 0}; int rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); - switch(rc) { + switch (rc) { case -1: req->done = TRUE; break; @@ -142,6 +142,9 @@ response_t *web_post(const char *url, const char *data) { curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_USERAGENT, "sist2"); + char err_buffer[CURL_ERROR_SIZE + 1] = {}; + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, err_buffer); + struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); @@ -151,12 +154,16 @@ response_t *web_post(const char *url, const char *data) { curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->status_code); - curl_easy_cleanup(curl); - curl_slist_free_all(headers); - resp->body = buffer.buf; resp->size = buffer.cur; + if (resp->status_code == 0) { + LOG_ERRORF("web.c", "CURL Error: %s", err_buffer) + } + + curl_easy_cleanup(curl); + curl_slist_free_all(headers); + return resp; } @@ -175,7 +182,7 @@ response_t *web_put(const char *url, const char *data) { curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "sist2"); curl_easy_setopt(curl, CURLOPT_DNS_USE_GLOBAL_CACHE, 0); - curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURLOPT_DNS_LOCAL_IP4 ); + curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURLOPT_DNS_LOCAL_IP4); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); diff --git a/src/main.c b/src/main.c index e27c907..c88923e 100644 --- a/src/main.c +++ b/src/main.c @@ -534,6 +534,7 @@ void sist2_exec_script(exec_args_t *args) { IndexCtx.es_url = args->es_url; IndexCtx.es_index = args->es_index; + IndexCtx.needs_es_connection = TRUE; LOG_DEBUGF("main.c", "descriptor version %s (%s)", desc.version, desc.type)