[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r37420 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r37420 - gnunet/src/core |
Date: |
Wed, 29 Jun 2016 20:53:57 +0200 |
Author: grothoff
Date: 2016-06-29 20:53:57 +0200 (Wed, 29 Jun 2016)
New Revision: 37420
Modified:
gnunet/src/core/core_api.c
gnunet/src/core/gnunet-service-core_clients.c
Log:
hacky fix for cadet issues
Modified: gnunet/src/core/core_api.c
===================================================================
--- gnunet/src/core/core_api.c 2016-06-29 17:44:38 UTC (rev 37419)
+++ gnunet/src/core/core_api.c 2016-06-29 18:53:57 UTC (rev 37420)
@@ -411,7 +411,7 @@
*/
static void
handle_connect_notify (void *cls,
- const struct ConnectNotifyMessage * cnm)
+ const struct ConnectNotifyMessage *cnm)
{
struct GNUNET_CORE_Handle *h = cls;
struct PeerRecord *pr;
@@ -713,6 +713,18 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Calling get_message with buffer of %u bytes\n",
(unsigned int) th->msize);
+ /* FIXME: this is ugly and a bit brutal, but "get_message"
+ may call GNUNET_CORE_notify_transmit_ready() which
+ may call GNUNET_MQ_send() as well, and we MUST get this
+ message out before the next SEND_REQUEST. So we queue
+ it (even though incomplete) and then---relying on MQ being
+ nice and not actually touching 'env' until much later---
+ fill it afterwards. This is horrible style, and once
+ the core_api abandons GNUNET_CORE_notify_transmit_ready
+ in favor of an MQ-style API, this hack should no longer
+ be required */
+ GNUNET_MQ_send (h->mq,
+ env);
ret = th->get_message (th->get_message_cls,
th->msize,
&sm[1]);
@@ -737,8 +749,6 @@
GNUNET_STRINGS_relative_time_to_string (delay,
GNUNET_YES),
(th->cork) ? " (corked)" : "");
- GNUNET_MQ_send (h->mq,
- env);
}
@@ -838,13 +848,13 @@
* @param inbound_notify function to call for all inbound messages, can be NULL
* @param inbound_hdr_only set to #GNUNET_YES if inbound_notify will only read
the
* GNUNET_MessageHeader and hence we do not need to give it the
full message;
- * can be used to improve efficiency, ignored if @a
inbound_notify is NULLL
+ * can be used to improve efficiency, ignored if @a
inbound_notify is NULL
* @param outbound_notify function to call for all outbound messages, can be
NULL
* @param outbound_hdr_only set to #GNUNET_YES if outbound_notify will only
read the
* GNUNET_MessageHeader and hence we do not need to give it the
full message
- * can be used to improve efficiency, ignored if @a
outbound_notify is NULLL
+ * can be used to improve efficiency, ignored if @a
outbound_notify is NULL
* @param handlers callbacks for messages we care about, NULL-terminated
- * @return handle to the core service (only useful for disconnect until 'init'
is called);
+ * @return handle to the core service (only useful for disconnect until @a
init is called);
* NULL on error (in this case, init is never called)
*/
struct GNUNET_CORE_Handle *
Modified: gnunet/src/core/gnunet-service-core_clients.c
===================================================================
--- gnunet/src/core/gnunet-service-core_clients.c 2016-06-29 17:44:38 UTC
(rev 37419)
+++ gnunet/src/core/gnunet-service-core_clients.c 2016-06-29 18:53:57 UTC
(rev 37420)
@@ -401,7 +401,14 @@
{
/* dequeue and recycle memory from pending request, there can only
be at most one per client and peer */
+ GNUNET_STATISTICS_update (GSC_stats,
+ gettext_noop
+ ("# dequeuing CAR (duplicate request)"), 1,
+ GNUNET_NO);
GSC_SESSIONS_dequeue_request (car);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Transmission request to `%s' was a duplicate!\n",
+ GNUNET_i2s (&req->peer));
}
car->target = req->peer;
car->received_time = GNUNET_TIME_absolute_get ();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r37420 - gnunet/src/core,
gnunet <=