[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22533 - gnunet/src/gns
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22533 - gnunet/src/gns |
Date: |
Fri, 6 Jul 2012 23:33:21 +0200 |
Author: schanzen
Date: 2012-07-06 23:33:21 +0200 (Fri, 06 Jul 2012)
New Revision: 22533
Modified:
gnunet/src/gns/gnunet-gns-proxy.c
gnunet/src/gns/gnunet-service-gns_resolver.c
Log:
-fix resover memleak, more proxy cookies
Modified: gnunet/src/gns/gnunet-gns-proxy.c
===================================================================
--- gnunet/src/gns/gnunet-gns-proxy.c 2012-07-06 15:29:24 UTC (rev 22532)
+++ gnunet/src/gns/gnunet-gns-proxy.c 2012-07-06 21:33:21 UTC (rev 22533)
@@ -250,6 +250,12 @@
/* Cookies to set */
struct ProxySetCookieHeader *set_cookies_tail;
+
+ /* connection status */
+ int con_status;
+
+ /* connection */
+ struct MHD_Connection *connection;
};
@@ -400,11 +406,11 @@
int html_mime_len = strlen (HTML_HDR_CONTENT);
int cookie_hdr_len = strlen (MHD_HTTP_HEADER_SET_COOKIE);
char hdr_mime[html_mime_len+1];
- char hdr_cookie[size+1];
- struct ProxySetCookieHeader *pch;
- size_t len;
+ char hdr_cookie[bytes+1];
+ //char hdr_cookie_gns[bytes+strlen (ctask->leho)+1];
+ //char* ndup;
- if (html_mime_len <= size)
+ if (html_mime_len <= bytes)
{
memcpy (hdr_mime, buffer, html_mime_len);
hdr_mime[html_mime_len] = '\0';
@@ -417,26 +423,62 @@
}
}
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Got header %s\n", buffer);
+ if (cookie_hdr_len > bytes)
+ return bytes;
- if (cookie_hdr_len <= size)
+ memcpy (hdr_cookie, buffer, bytes);
+ hdr_cookie[bytes] = '\0';
+ /*remove crlf*/
+ if (hdr_cookie[bytes-1] == '\n')
+ hdr_cookie[bytes-1] = '\0';
+
+ if (hdr_cookie[bytes-2] == '\r')
+ hdr_cookie[bytes-2] = '\0';
+
+ if (0 == memcmp (hdr_cookie,
+ MHD_HTTP_HEADER_SET_COOKIE,
+ cookie_hdr_len))
{
- memcpy (hdr_cookie, buffer, size);
- hdr_cookie[size] = '\0';
+ //ndup = GNUNET_strdup (hdr_cookie);
+ //tok = strtok (ndup, ";");
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Got Set-Cookie HTTP header %s\n", hdr_cookie);
- GNUNET_assert (0);
+ //pch = GNUNET_malloc (sizeof (struct ProxySetCookieHeader));
+ //len = strlen (hdr_cookie) - cookie_hdr_len - 1;
+ //pch->cookie = GNUNET_malloc (len + 1);
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Copying Set-Cookie data %s:\n", hdr_cookie+cookie_hdr_len+1);
+ //memset (pch->cookie, 0, len + 1);
+ //memcpy (pch->cookie, hdr_cookie+cookie_hdr_len+1, len);
+ //GNUNET_CONTAINER_DLL_insert (ctask->set_cookies_head,
+ // ctask->set_cookies_tail,
+ // pch);
+ //pch = ctask->set_cookies_head;
+ //while (pch != NULL)
+ //{
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "MHD: adding cookie: %s\n",
+ hdr_cookie+cookie_hdr_len+1);
- pch = GNUNET_malloc (sizeof (struct ProxySetCookieHeader));
- len = strlen (hdr_cookie) - strlen (MHD_HTTP_HEADER_SET_COOKIE);
- pch->cookie = GNUNET_malloc (len + 1);
- memset (pch->cookie, 0, len + 1);
- memcpy (pch->cookie, hdr_cookie+strlen (MHD_HTTP_HEADER_SET_COOKIE), len);
- GNUNET_CONTAINER_DLL_insert (ctask->set_cookies_head,
- ctask->set_cookies_tail,
- pch);
+ if (GNUNET_NO == MHD_add_response_header (ctask->response,
+ MHD_HTTP_HEADER_SET_COOKIE,
+ hdr_cookie+cookie_hdr_len+1))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "MHD: Error adding set-cookie header field %s\n",
+ hdr_cookie+cookie_hdr_len+1);
+ }
+ MHD_add_response_header (ctask->response,
+ MHD_HTTP_HEADER_SET_COOKIE,
+ "test=test; domain=homepage.gnunet; secure");
+ //GNUNET_free (pch->cookie);
+ //GNUNET_CONTAINER_DLL_remove (ctask->set_cookies_head,
+ // ctask->set_cookies_tail,
+ // pch);
+ //GNUNET_free (pch);
+ //pch = ctask->set_cookies_head;
+ //}
}
return bytes;
@@ -493,7 +535,13 @@
struct ProxyCurlTask *ctask = ctx;
//MHD_run (httpd);
-
+ if (ctask->con_status == MHD_NO)
+ {
+ MHD_queue_response (ctask->connection,
+ MHD_HTTP_OK,
+ ctask->response);
+ ctask->con_status = MHD_YES;
+ }
total = size*nmemb;
if (total == 0)
@@ -619,33 +667,14 @@
int nomatch;
char *hostptr;
regmatch_t m[RE_N_MATCHES];
- struct ProxySetCookieHeader *pch;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"MHD: content cb %s\n", ctask->url);
-
- pch = ctask->set_cookies_head;
- while (pch != NULL)
- {
- if (GNUNET_NO == MHD_add_response_header (ctask->response,
- MHD_HTTP_HEADER_SET_COOKIE,
- pch->cookie))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "MHD: Error adding set-cookie header field %s\n",
- pch->cookie);
- }
- GNUNET_free (pch->cookie);
- GNUNET_CONTAINER_DLL_remove (ctask->set_cookies_head,
- ctask->set_cookies_tail,
- pch);
- pch = ctask->set_cookies_head;
- }
if (ctask->download_successful &&
(ctask->buf_status == BUF_WAIT_FOR_CURL))
{
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"MHD: sending response for %s\n", ctask->url);
ctask->download_in_progress = GNUNET_NO;
GNUNET_SCHEDULER_add_now (&mhd_content_free, ctask);
@@ -657,7 +686,7 @@
if (ctask->download_error &&
(ctask->buf_status == BUF_WAIT_FOR_CURL))
{
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"MHD: sending error response\n");
ctask->download_in_progress = GNUNET_NO;
GNUNET_SCHEDULER_add_now (&mhd_content_free, ctask);
@@ -1286,6 +1315,8 @@
ctask->buf_status = BUF_WAIT_FOR_CURL;
ctask->bytes_in_buffer = 0;
ctask->parse_content = GNUNET_NO;
+ ctask->connection = con;
+ ctask->con_status = MHD_NO;
curl_easy_setopt (ctask->curl, CURLOPT_HEADERFUNCTION, &curl_check_hdr);
curl_easy_setopt (ctask->curl, CURLOPT_HEADERDATA, ctask);
@@ -1298,7 +1329,7 @@
{
sprintf (curlurl, "http://%s%s", host, url);
curl_easy_setopt (ctask->curl, CURLOPT_URL, curlurl);
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Adding new curl task for %s\n", curlurl);
}
strcpy (ctask->host, host);
@@ -1321,12 +1352,12 @@
&mhd_content_cb,
ctask,
NULL);
+ //ret = MHD_queue_response (con, MHD_HTTP_OK, ctask->response);
- ret = MHD_queue_response (con, MHD_HTTP_OK, ctask->response);
-
//MHD_destroy_response (response);
- return ret;
+ //return ret;
+ return MHD_YES;
}
/**
@@ -2251,7 +2282,7 @@
if (NULL == s)
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_INFO, "accept");
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "accept");
return;
}
Modified: gnunet/src/gns/gnunet-service-gns_resolver.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns_resolver.c 2012-07-06 15:29:24 UTC
(rev 22532)
+++ gnunet/src/gns/gnunet-service-gns_resolver.c 2012-07-06 21:33:21 UTC
(rev 22533)
@@ -166,6 +166,8 @@
if (NULL != strtok (NULL, "."))
ret = 0;
+ GNUNET_free (ndup);
+
return ret;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22533 - gnunet/src/gns,
gnunet <=