struct HTTP_Connection
{
struct HTTP_Connection * next;
-
struct HTTP_Connection * prev;
void * addr;
struct Session * session;
- struct GNUNET_SERVER_MessageStreamTokenizer * msgtok;
+ struct GNUNET_SERVER_MessageStreamTokenizer * get_msgtok;
};
struct HTTP_Connection_in
con->is_bad_request = GNUNET_NO;
}
-static void messageTokenizerCallback (void *cls,
- void *client,
- const struct GNUNET_MessageHeader *message)
+static void mhd_write_mst_cb (void *cls,
+ void *client,
+ const struct GNUNET_MessageHeader *message)
{
struct HTTP_Connection_in * con = cls;
GNUNET_assert(con != NULL);
0);
}
+static void curl_write_mst_cb (void *cls,
+ void *client,
+ const struct GNUNET_MessageHeader *message)
+{
+ struct HTTP_Connection * con = cls;
+ GNUNET_assert(con != NULL);
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Forwarding message to transport service, type %u and size %u from `%s' (`%s')\n",
+ ntohs(message->type),
+ ntohs(message->size),
+ GNUNET_i2s(&(con->session->identity)),http_plugin_address_to_string(NULL,con->addr,con->addrlen));
+
+ con->session->plugin->env->receive (con->session->plugin->env->cls,
+ &con->session->identity,
+ message, 1, con->session,
+ con->addr,
+ con->addrlen);
+}
+
+
/**
* Check if ip is allowed to connect.
*/
msg=con->pending_msgs_tail;
-
if (msg!=NULL)
{
/*
*httpSessionCache = con;
if (con->msgtok==NULL)
- con->msgtok = GNUNET_SERVER_mst_create (&messageTokenizerCallback, con);
+ con->msgtok = GNUNET_SERVER_mst_create (&mhd_write_mst_cb, con);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"HTTP Daemon has new an incoming `%s' request from peer `%s' (`%s')\n",
method,
static size_t send_curl_write_callback( void *stream, size_t size, size_t nmemb, void *ptr)
{
struct HTTP_Connection * con = ptr;
- char * data = NULL;
- data = GNUNET_malloc(size*nmemb +1);
- if (data != NULL)
- {
- memcpy( data, stream, size*nmemb);
- data[size*nmemb] = '\0';
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Connection %X: recieved %s\n",con,data);
- free (data);
- }
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Connection %X: %u bytes recieved\n",con, size*nmemb);
+ GNUNET_SERVER_mst_receive(con->get_msgtok, con, stream,size*nmemb, GNUNET_NO, GNUNET_NO);
+
return (size * nmemb);
}
curl_multi_strerror (mret));
return -1;
}
+
+ if (con->get_msgtok != NULL)
+ con->get_msgtok = GNUNET_SERVER_mst_create (&curl_write_mst_cb, con);
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Connection %X: inbound not connected, initiating connection\n",con);
}
}