if (ctask->download_successful &&
(ctask->buf_status == BUF_WAIT_FOR_CURL))
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"MHD: sending response for %s\n", ctask->url);
ctask->download_in_progress = GNUNET_NO;
curl_multi_remove_handle (curl_multi, ctask->curl);
if (ctask->download_error &&
(ctask->buf_status == BUF_WAIT_FOR_CURL))
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"MHD: sending error response\n");
ctask->download_in_progress = GNUNET_NO;
curl_multi_remove_handle (curl_multi, ctask->curl);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"SSL target server: %s\n", ssl_ip);
sprintf (resolvename, "%s:%d:%s", ctask->leho, HTTPS_PORT, ssl_ip);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Curl resolve: %s\n", resolvename);
ctask->resolver = curl_slist_append ( ctask->resolver, resolvename);
curl_easy_setopt (ctask->curl, CURLOPT_RESOLVE, ctask->resolver);
sprintf (curlurl, "https://%s%s", ctask->leho, ctask->url);
struct MhdHttpList* hd = cls;
const char* page = "<html><head><title>gnoxy</title>"\
"</head><body>cURL fail</body></html>";
- struct MHD_Response *response;
+ struct MHD_Response *response = NULL;
char host[265];
char curlurl[512];
int ret = MHD_YES;
/* Do cURL */
ctask = GNUNET_malloc (sizeof (struct ProxyCurlTask));
ctask->mhd = hd;
- ctask->curl = curl_easy_init();
if (curl_multi == NULL)
curl_multi = curl_multi_init ();
+
+ ctask->curl = curl_easy_init();
if ((ctask->curl == NULL) || (curl_multi == NULL))
{
GNUNET_free (ctask);
return ret;
}
-
+
+ ctask->prev = NULL;
+ ctask->next = NULL;
+ ctask->headers = NULL;
+ ctask->resolver = NULL;
+ ctask->buffer_ptr = NULL;
ctask->download_in_progress = GNUNET_YES;
ctask->download_successful = GNUNET_NO;
ctask->buf_status = BUF_WAIT_FOR_CURL;
curl_easy_setopt (ctask->curl, CURLOPT_MAXREDIRS, 4);
/* no need to abort if the above failed */
if (GNUNET_NO == ctask->mhd->is_ssl)
+ {
sprintf (curlurl, "http://%s%s", host, url);
+ curl_easy_setopt (ctask->curl, CURLOPT_URL, curlurl);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Adding new curl task for %s\n", curlurl);
+ }
strcpy (ctask->host, host);
strcpy (ctask->url, url);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Adding new curl task for %s\n", curlurl);
- curl_easy_setopt (ctask->curl, CURLOPT_URL, curlurl);
+ //curl_easy_setopt (ctask->curl, CURLOPT_URL, curlurl);
curl_easy_setopt (ctask->curl, CURLOPT_FAILONERROR, 1);
curl_easy_setopt (ctask->curl, CURLOPT_CONNECTTIMEOUT, 600L);
curl_easy_setopt (ctask->curl, CURLOPT_TIMEOUT, 600L);
//download_prepare (ctask);
//curl_download_prepare ();
- response = MHD_create_response_from_callback (-1, -1,
+ response = MHD_create_response_from_callback (MHD_SIZE_UNKNOWN,
+ MHD_SIZE_UNKNOWN,
&mhd_content_cb,
ctask,
&mhd_content_free);
* @return data
*/
static char*
-load_file (const char* filename)
+load_file (const char* filename, unsigned int* size)
{
FILE *fp;
char *buffer;
- long size;
- size = get_file_size (filename);
- if (size == 0)
+ *size = get_file_size (filename);
+ if (*size == 0)
return NULL;
fp = fopen (filename, "rb");
if (!fp)
return NULL;
- buffer = GNUNET_malloc (size);
+ buffer = GNUNET_malloc (*size);
if (!buffer)
{
fclose (fp);
return NULL;
}
- if (size != fread (buffer, 1, size, fp))
+ if (*size != fread (buffer, 1, *size, fp))
{
GNUNET_free (buffer);
buffer = NULL;
load_key_from_file (gnutls_x509_privkey_t key, char* keyfile)
{
gnutls_datum_t key_data;
+ key_data.data = NULL;
int ret;
- key_data.data = (unsigned char*)load_file (keyfile);
- key_data.size = strlen ((char*)key_data.data);
+ key_data.data = (unsigned char*)load_file (keyfile, &key_data.size);
ret = gnutls_x509_privkey_import (key, &key_data,
GNUTLS_X509_FMT_PEM);
load_cert_from_file (gnutls_x509_crt_t crt, char* certfile)
{
gnutls_datum_t cert_data;
+ cert_data.data = NULL;
int ret;
- cert_data.data = (unsigned char*)load_file (certfile);
- cert_data.size = strlen ((char*)cert_data.data);
+ cert_data.data = (unsigned char*)load_file (certfile, &cert_data.size);
ret = gnutls_x509_crt_import (crt, &cert_data,
GNUTLS_X509_FMT_PEM);
struct ProxyCurlTask *ctask;
struct ProxyCurlTask *ctask_tmp;
+ gnutls_global_deinit ();
+
if (GNUNET_SCHEDULER_NO_TASK != curl_download_task)
{
GNUNET_SCHEDULER_cancel (curl_download_task);
char* cafile_cfg = NULL;
char* cafile;
+ curl_multi = NULL;
+
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Loading CA\n");