#define _RECEIVE 0
#define _SEND 1
+
+/* Enable output for debbuging URL's of incoming requests */
+#define DEBUG_URL_PARSE GNUNET_NO
+
+
/**
* Encapsulation of all of the state of the plugin.
*/
GNUNET_break (0);
return GNUNET_SYSERR;
}
- if ((NULL == session->server_send) && (GNUNET_NO == session->connect_in_progress))
+ if (NULL == session->server_send)
{
+ if (GNUNET_NO == session->connect_in_progress)
+ {
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, session->plugin->name,
"Session %p/connection %p: Sending message with %u bytes to peer `%s' with FAILED\n",
session, session->server_send,
msgbuf_size, GNUNET_i2s (&session->target));
GNUNET_break (0);
return GNUNET_SYSERR;
+ }
+ }
+ else
+ {
+ if (GNUNET_YES == session->server_send->disconnect)
+ return GNUNET_SYSERR;
}
- if (GNUNET_YES == session->server_send->disconnect)
- return GNUNET_SYSERR;
-
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, session->plugin->name,
"Session %p/connection %p: Sending message with %u to peer `%s' with \n",
session, session->server_send,
stat_txt, msgbuf_size, GNUNET_NO);
GNUNET_free (stat_txt);
- server_reschedule (session->plugin, session->server_send->mhd_daemon, GNUNET_YES);
- server_reschedule_session_timeout (session);
-
- /* struct Plugin *plugin = cls; */
+ if (NULL != session->server_send)
+ {
+ server_reschedule (session->plugin,
+ session->server_send->mhd_daemon,
+ GNUNET_YES);
+ server_reschedule_session_timeout (session);
+ }
return bytes_sent;
}
static int
server_parse_url (struct HTTP_Server_Plugin *plugin, const char * url, struct GNUNET_PeerIdentity * target, uint32_t *tag)
{
- int debug = GNUNET_YES;
-
char * tag_start = NULL;
char * tag_end = NULL;
char * target_start = NULL;
if (NULL == separator)
{
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
tag_start = separator + 1;
if (strlen (tag_start) == 0)
{
/* No tag after separator */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
ctag = strtoul (tag_start, &tag_end, 10);
if (ctag == 0)
{
/* tag == 0 , invalid */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
if ((ctag == ULONG_MAX) && (ERANGE == errno))
{
/* out of range: > ULONG_MAX */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
if (ctag > UINT32_MAX)
{
/* out of range: > UINT32_MAX */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
(*tag) = (uint32_t) ctag;
if (NULL == tag_end)
{
/* no char after tag */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
if (url[strlen(url)] != tag_end[0])
{
/* there are more not converted chars after tag */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
- if (debug)
+ if (DEBUG_URL_PARSE)
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
"Found tag `%u' in url\n", (*tag));
if (hash_length != plugin->peer_id_length)
{
/* no char after tag */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
memcpy (hash, target_start, hash_length);
if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string ((const char *) hash, &(target->hashPubKey)))
{
/* hash conversion failed */
- if (debug) GNUNET_break (0);
+ if (DEBUG_URL_PARSE) GNUNET_break (0);
return GNUNET_SYSERR;
}
if (direction == _RECEIVE)
s->server_recv = sc;
- if ((NULL != s->server_send) && (NULL != s->server_send))
+ if ((NULL != s->server_send) && (NULL != s->server_recv))
s->connect_in_progress = GNUNET_NO; /* PUT and GET are connected */
#if MHD_VERSION >= 0x00090E00
else
{
response = MHD_create_response_from_data (strlen (HTTP_ERROR_RESPONSE), HTTP_ERROR_RESPONSE, MHD_NO, MHD_NO);
+ MHD_add_response_header (response,
+ MHD_HTTP_HEADER_CONTENT_TYPE,
+ "text/html");
res = MHD_queue_response (mhd_connection, MHD_HTTP_NOT_FOUND, response);
MHD_destroy_response (response);
return res;