summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorNikola Pajkovsky <npajkovs@redhat.com>2011-05-17 16:19:29 +0200
committerNikola Pajkovsky <npajkovs@redhat.com>2011-05-17 17:01:43 +0200
commit92cb090b4bb41ae18e662496f6863c609849db11 (patch)
treedecd3a9e7bbe10e2ebf8224a6b7b8b3e1216db8f /src/lib
parenta1275c845a4ba0b355395d7bc3473509f4695b8e (diff)
downloadabrt-92cb090b4bb41ae18e662496f6863c609849db11.tar.gz
abrt-92cb090b4bb41ae18e662496f6863c609849db11.tar.xz
abrt-92cb090b4bb41ae18e662496f6863c609849db11.zip
add additional headers into abrt_post()
Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/abrt_curl.c16
-rw-r--r--src/lib/abrt_curl.h13
2 files changed, 20 insertions, 9 deletions
diff --git a/src/lib/abrt_curl.c b/src/lib/abrt_curl.c
index 0802a49b..a05ba54d 100644
--- a/src/lib/abrt_curl.c
+++ b/src/lib/abrt_curl.c
@@ -213,6 +213,7 @@ int
abrt_post(abrt_post_state_t *state,
const char *url,
const char *content_type,
+ const char **additional_headers,
const char *data,
off_t data_size)
{
@@ -337,20 +338,23 @@ abrt_post(abrt_post_state_t *state,
if (!httpheader_list)
error_msg_and_die("out of memory");
free(content_type_header);
- xcurl_easy_setopt_ptr(handle, CURLOPT_HTTPHEADER, httpheader_list);
}
- // Override "Accept: text/plain": helps convince server to send plain-text
- // error messages in the body of HTTP error responses [not verified to work]
- httpheader_list = curl_slist_append(httpheader_list, "Accept: text/plain");
- if (!httpheader_list)
- error_msg_and_die("out of memory");
+ for (; additional_headers && *additional_headers; additional_headers++)
+ {
+ httpheader_list = curl_slist_append(httpheader_list, *additional_headers);
+ if (!httpheader_list)
+ error_msg_and_die("out of memory");
+ }
// Add User-Agent: ABRT/N.M
httpheader_list = curl_slist_append(httpheader_list, "User-Agent: ABRT/"VERSION);
if (!httpheader_list)
error_msg_and_die("out of memory");
+ if (httpheader_list)
+ xcurl_easy_setopt_ptr(handle, CURLOPT_HTTPHEADER, httpheader_list);
+
// Disabled: was observed to also handle "305 Use proxy" redirect,
// apparently with POST->GET remapping - which server didn't like at all.
// Attempted to suppress remapping on 305 using CURLOPT_POSTREDIR of -1,
diff --git a/src/lib/abrt_curl.h b/src/lib/abrt_curl.h
index 77b4605c..ad2afc11 100644
--- a/src/lib/abrt_curl.h
+++ b/src/lib/abrt_curl.h
@@ -62,31 +62,38 @@ int
abrt_post(abrt_post_state_t *state,
const char *url,
const char *content_type,
+ const char **additional_headers,
const char *data,
off_t data_size);
static inline int
abrt_post_string(abrt_post_state_t *state,
const char *url,
const char *content_type,
+ const char **additional_headers,
const char *str)
{
- return abrt_post(state, url, content_type, str, ABRT_POST_DATA_STRING);
+ return abrt_post(state, url, content_type, additional_headers,
+ str, ABRT_POST_DATA_STRING);
}
static inline int
abrt_post_file(abrt_post_state_t *state,
const char *url,
const char *content_type,
+ const char **additional_headers,
const char *filename)
{
- return abrt_post(state, url, content_type, filename, ABRT_POST_DATA_FROMFILE);
+ return abrt_post(state, url, content_type, additional_headers,
+ filename, ABRT_POST_DATA_FROMFILE);
}
static inline int
abrt_post_file_as_form(abrt_post_state_t *state,
const char *url,
const char *content_type,
+ const char **additional_headers,
const char *filename)
{
- return abrt_post(state, url, content_type, filename, ABRT_POST_DATA_FROMFILE_AS_FORM_DATA);
+ return abrt_post(state, url, content_type, additional_headers,
+ filename, ABRT_POST_DATA_FROMFILE_AS_FORM_DATA);
}
#ifdef __cplusplus