[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36333 - in gnunet/src: include multicast psyc psycstore ut
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36333 - in gnunet/src: include multicast psyc psycstore util |
Date: |
Sun, 6 Sep 2015 01:44:08 +0200 |
Author: tg
Date: 2015-09-06 01:44:08 +0200 (Sun, 06 Sep 2015)
New Revision: 36333
Modified:
gnunet/src/include/gnunet_psyc_service.h
gnunet/src/multicast/gnunet-service-multicast.c
gnunet/src/multicast/multicast_api.c
gnunet/src/psyc/gnunet-service-psyc.c
gnunet/src/psyc/test_psyc.c
gnunet/src/psycstore/gnunet-service-psycstore.c
gnunet/src/psycstore/plugin_psycstore_sqlite.c
gnunet/src/psycstore/psyc_util_lib.c
gnunet/src/util/client_manager.c
Log:
multicast, psyc, psycstore, client_manager fixes
Modified: gnunet/src/include/gnunet_psyc_service.h
===================================================================
--- gnunet/src/include/gnunet_psyc_service.h 2015-09-05 23:44:03 UTC (rev
36332)
+++ gnunet/src/include/gnunet_psyc_service.h 2015-09-05 23:44:08 UTC (rev
36333)
@@ -537,11 +537,18 @@
/**
* Method called from PSYC upon receiving part of a message.
*
- * @param cls Closure.
- * @param message_id Sequence number of the message.
- * @param data_offset Byte offset of data, only set if @a msg has a type
- * #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA
- * @param flags OR'ed GNUNET_PSYC_MessageFlags
+ * @param cls
+ * Closure.
+ * @param slave_key
+ * Public key of the slave sending the message.
+ * Only set for channel master.
+ * @param message_id
+ * Sequence number of the message.
+ * @param flags
+ * OR'ed GNUNET_PSYC_MessageFlags
+ * @param data_offset
+ * Byte offset of data, only set if @a msg has a type
+ * #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA
* @param msg Message part, one of the following types:
* - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_HEADER
* - #GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD
@@ -552,9 +559,10 @@
*/
typedef void
(*GNUNET_PSYC_MessagePartCallback) (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey
*slave_key,
uint64_t message_id,
+ uint32_t flags,
uint64_t data_offset,
- uint32_t flags,
const struct GNUNET_MessageHeader *msg);
@@ -561,10 +569,14 @@
/**
* Method called from PSYC upon receiving a join request.
*
- * @param cls Closure.
- * @param slave_key Public key of the slave requesting join.
- * @param join_msg Join message sent along with the request.
- * @param jh Join handle to use with GNUNET_PSYC_join_decision()
+ * @param cls
+ * Closure.
+ * @param slave_key
+ * Public key of the slave requesting join.
+ * @param join_msg
+ * Join message sent along with the request.
+ * @param jh
+ * Join handle to use with GNUNET_PSYC_join_decision()
*/
typedef void
(*GNUNET_PSYC_JoinRequestCallback) (void *cls,
Modified: gnunet/src/multicast/gnunet-service-multicast.c
===================================================================
--- gnunet/src/multicast/gnunet-service-multicast.c 2015-09-05 23:44:03 UTC
(rev 36332)
+++ gnunet/src/multicast/gnunet-service-multicast.c 2015-09-05 23:44:08 UTC
(rev 36333)
@@ -788,9 +788,11 @@
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"%p Client connected to group %s..\n",
mem, GNUNET_h2s (&grp->pub_key_hash));
+ char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "%p ..as member %s.\n",
- mem, GNUNET_h2s (&mem_pub_key_hash));
+ "%p ..as member %s (%s).\n",
+ mem, GNUNET_h2s (&mem->pub_key_hash), str);
+ GNUNET_free (str);
GNUNET_SERVER_client_set_user_context (client, grp);
@@ -833,6 +835,7 @@
if (0 < join_msg_size)
memcpy (&req[1], join_msg, join_msg_size);
+ req->member_key = mem->pub_key;
req->purpose.size = htonl (msg_size
- sizeof (req->header)
- sizeof (req->reserved)
@@ -1000,6 +1003,7 @@
/* FIXME: yucky, should use separate message structs for P2P and CS! */
out = (struct GNUNET_MULTICAST_RequestHeader *) GNUNET_copy_message (m);
+ out->member_key = mem->pub_key;
out->fragment_id = GNUNET_ntohll (++mem->max_fragment_id);
out->purpose.size = htonl (ntohs (out->header.size)
- sizeof (out->header)
Modified: gnunet/src/multicast/multicast_api.c
===================================================================
--- gnunet/src/multicast/multicast_api.c 2015-09-05 23:44:03 UTC (rev
36332)
+++ gnunet/src/multicast/multicast_api.c 2015-09-05 23:44:08 UTC (rev
36333)
@@ -267,7 +267,7 @@
"Calling message callback with a message of size %u.\n",
ntohs (mmsg->header.size));
- if (NULL != grp->message_cb)
+ if (GNUNET_YES != grp->is_disconnecting && NULL != grp->message_cb)
grp->message_cb (grp->cb_cls, mmsg);
}
@@ -848,7 +848,7 @@
grp->disconnect_cls = part_cls;
GNUNET_CLIENT_MANAGER_disconnect (mem->grp.client, GNUNET_YES,
- &member_cleanup, mem);
+ member_cleanup, mem);
}
Modified: gnunet/src/psyc/gnunet-service-psyc.c
===================================================================
--- gnunet/src/psyc/gnunet-service-psyc.c 2015-09-05 23:44:03 UTC (rev
36332)
+++ gnunet/src/psyc/gnunet-service-psyc.c 2015-09-05 23:44:08 UTC (rev
36333)
@@ -534,8 +534,12 @@
static void
cleanup_channel (struct Channel *chn)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "%p Cleaning up channel %s. master? %u\n",
+ chn, GNUNET_h2s (&chn->pub_key_hash), chn->is_master);
message_queue_drop (chn);
- GNUNET_CONTAINER_multihashmap_remove_all (recv_cache, &chn->pub_key_hash);
+ GNUNET_CONTAINER_multihashmap_destroy (chn->recv_frags);
+ chn->recv_frags = NULL;
if (NULL != chn->store_op)
{
@@ -565,6 +569,7 @@
struct Channel *
chn = GNUNET_SERVER_client_get_user_context (client, struct Channel);
+ chn->is_disconnected = GNUNET_YES;
if (NULL == chn)
{
@@ -1046,6 +1051,7 @@
pmsg->message_id = req->request_id;
pmsg->fragment_offset = req->fragment_offset;
pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST);
+ pmsg->slave_key = req->member_key;
memcpy (&pmsg[1], &req[1], size - sizeof (*req));
client_send_msg (chn, &pmsg->header);
@@ -1229,7 +1235,7 @@
struct GNUNET_CONTAINER_MultiHashMap
*chan_msgs = GNUNET_CONTAINER_multihashmap_get (recv_cache,
&chn->pub_key_hash);
- GNUNET_assert (NULL != chan_msgs); // FIXME
+ GNUNET_assert (NULL != chan_msgs);
uint64_t frag_id;
while (GNUNET_YES == GNUNET_CONTAINER_heap_peek2 (fragq->fragments, NULL,
@@ -1382,7 +1388,7 @@
/* Check if there's a missing message before the current one */
if (GNUNET_PSYC_STATE_NOT_MODIFIED == fragq->state_delta)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state NOT modified\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state NOT modified\n", chn);
if (!(fragq->flags & GNUNET_PSYC_MESSAGE_ORDER_ANY)
&& (chn->max_message_id != msg_id - 1
@@ -1399,7 +1405,7 @@
}
else
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state modified\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%p state modified\n", chn);
if (GNUNET_YES != fragq->state_is_modified)
{
if (msg_id - fragq->state_delta != chn->max_state_message_id)
@@ -1594,12 +1600,12 @@
mst->max_group_generation = max_group_generation;
mst->origin
= GNUNET_MULTICAST_origin_start (cfg, &mst->priv_key, max_fragment_id,
- &mcast_recv_join_request,
- &mcast_recv_membership_test,
- &mcast_recv_replay_fragment,
- &mcast_recv_replay_message,
- &mcast_recv_request,
- &mcast_recv_message, chn);
+ mcast_recv_join_request,
+ mcast_recv_membership_test,
+ mcast_recv_replay_fragment,
+ mcast_recv_replay_message,
+ mcast_recv_request,
+ mcast_recv_message, chn);
chn->is_ready = GNUNET_YES;
}
else
@@ -1641,12 +1647,12 @@
&slv->origin,
slv->relay_count, slv->relays,
&slv->join_msg->header,
- &mcast_recv_join_request,
- &mcast_recv_join_decision,
- &mcast_recv_membership_test,
- &mcast_recv_replay_fragment,
- &mcast_recv_replay_message,
- &mcast_recv_message, chn);
+ mcast_recv_join_request,
+ mcast_recv_join_decision,
+ mcast_recv_membership_test,
+ mcast_recv_replay_fragment,
+ mcast_recv_replay_message,
+ mcast_recv_message, chn);
if (NULL != slv->join_msg)
{
GNUNET_free (slv->join_msg);
@@ -2004,7 +2010,7 @@
else if (GNUNET_YES == chn->is_disconnected)
{
/* FIXME: handle partial message (when still in_transmit) */
- cleanup_channel (chn);
+ return GNUNET_SYSERR;
}
return ret;
}
@@ -2113,13 +2119,17 @@
}
else if (pmeth->flags & GNUNET_PSYC_MASTER_TRANSMIT_STATE_MODIFY)
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%p master_queue_message: setting
state_modify flag\n", mst);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "%p master_queue_message: state_delta=%" PRIu64 "\n",
+ mst, tmit_msg->id - mst->max_state_message_id);
pmeth->state_delta = GNUNET_htonll (tmit_msg->id
- mst->max_state_message_id);
+ mst->max_state_message_id = tmit_msg->id;
}
else
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%p master_queue_message:
setting state_not_modified flag\n", mst);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "%p master_queue_message: state not modified\n", mst);
pmeth->state_delta = GNUNET_htonll (GNUNET_PSYC_STATE_NOT_MODIFIED);
}
@@ -2234,7 +2244,9 @@
uint16_t size = ntohs (msg->size);
if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < size - sizeof (*msg))
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%p Message payload too large.\n",
chn);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "%p Message payload too large: %u < %u.\n",
+ chn, GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD, size - sizeof
(*msg));
GNUNET_break (0);
transmit_cancel (chn, client);
GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
@@ -2613,7 +2625,7 @@
masters = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
channel_slaves = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
- recv_cache = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_YES);
+ recv_cache = GNUNET_CONTAINER_multihashmap_create (1, GNUNET_NO);
nc = GNUNET_SERVER_notification_context_create (server, 1);
GNUNET_SERVER_add_handlers (server, server_handlers);
GNUNET_SERVER_disconnect_notify (server, &client_disconnect, NULL);
Modified: gnunet/src/psyc/test_psyc.c
===================================================================
--- gnunet/src/psyc/test_psyc.c 2015-09-05 23:44:03 UTC (rev 36332)
+++ gnunet/src/psyc/test_psyc.c 2015-09-05 23:44:08 UTC (rev 36333)
@@ -213,8 +213,9 @@
void
-master_message_part_cb (void *cls, uint64_t message_id,
- uint64_t data_offset, uint32_t flags,
+master_message_part_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+ uint64_t message_id, uint32_t flags, uint64_t
data_offset,
const struct GNUNET_MessageHeader *msg)
{
if (NULL == msg)
@@ -284,8 +285,9 @@
void
-slave_message_part_cb (void *cls, uint64_t message_id,
- uint64_t data_offset, uint32_t flags,
+slave_message_part_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+ uint64_t message_id, uint32_t flags, uint64_t
data_offset,
const struct GNUNET_MessageHeader *msg)
{
if (NULL == msg)
@@ -453,9 +455,9 @@
test = TEST_SLAVE_HISTORY_REPLAY;
GNUNET_PSYC_channel_history_replay (slv_chn, 1, 1, "",
GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
- &slave_message_cb,
- &slave_message_part_cb,
- &slave_history_replay_result, NULL);
+ slave_message_cb,
+ slave_message_part_cb,
+ slave_history_replay_result, NULL);
}
@@ -481,9 +483,9 @@
test = TEST_MASTER_HISTORY_REPLAY;
GNUNET_PSYC_channel_history_replay (mst_chn, 1, 1, "",
GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
- &master_message_cb,
- &master_message_part_cb,
- &master_history_replay_result, NULL);
+ master_message_cb,
+ master_message_part_cb,
+ master_history_replay_result, NULL);
}
Modified: gnunet/src/psycstore/gnunet-service-psycstore.c
===================================================================
--- gnunet/src/psycstore/gnunet-service-psycstore.c 2015-09-05 23:44:03 UTC
(rev 36332)
+++ gnunet/src/psycstore/gnunet-service-psycstore.c 2015-09-05 23:44:08 UTC
(rev 36333)
@@ -508,8 +508,10 @@
static void
-recv_state_message_part (void *cls, uint64_t message_id, uint64_t data_offset,
- uint32_t flags, const struct GNUNET_MessageHeader
*msg)
+recv_state_message_part (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+ uint64_t message_id, uint32_t flags, uint64_t
data_offset,
+ const struct GNUNET_MessageHeader *msg)
{
struct StateModifyClosure *scls = cls;
uint16_t psize;
@@ -618,7 +620,7 @@
if (NULL == scls->recv)
{
- scls->recv = GNUNET_PSYC_receive_create (NULL, &recv_state_message_part,
+ scls->recv = GNUNET_PSYC_receive_create (NULL, recv_state_message_part,
scls);
}
@@ -660,7 +662,7 @@
{
ret = db->message_get (db->cls, &req->channel_key,
message_id, message_id,
- &ret_frags, &recv_state_fragment, &scls);
+ &ret_frags, recv_state_fragment, &scls);
if (GNUNET_OK != ret)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
Modified: gnunet/src/psycstore/plugin_psycstore_sqlite.c
===================================================================
--- gnunet/src/psycstore/plugin_psycstore_sqlite.c 2015-09-05 23:44:03 UTC
(rev 36332)
+++ gnunet/src/psycstore/plugin_psycstore_sqlite.c 2015-09-05 23:44:08 UTC
(rev 36333)
@@ -598,7 +598,7 @@
"SELECT name, value_current\n"
"FROM state\n"
"WHERE channel_id = (SELECT id FROM channels WHERE pub_key =
?)\n"
- " AND (name = ? OR name LIKE ?);",
+ " AND (name = ? OR substr(name, 1, ?) = ? || '_');",
&plugin->select_state_prefix);
sql_prepare (plugin->dbh,
@@ -1763,16 +1763,12 @@
int ret = GNUNET_SYSERR;
sqlite3_stmt *stmt = plugin->select_state_prefix;
size_t name_len = strlen (name);
- char *name_prefix;
- GNUNET_asprintf (&name_prefix,
- "%s_%%",
- name);
if (SQLITE_OK != sqlite3_bind_blob (stmt, 1, channel_key,
sizeof (*channel_key), SQLITE_STATIC)
|| SQLITE_OK != sqlite3_bind_text (stmt, 2, name, name_len,
SQLITE_STATIC)
- || SQLITE_OK != sqlite3_bind_text (stmt, 3, name_prefix, name_len + 2,
- SQLITE_STATIC))
+ || SQLITE_OK != sqlite3_bind_int (stmt, 3, name_len + 1)
+ || SQLITE_OK != sqlite3_bind_text (stmt, 4, name, name_len,
SQLITE_STATIC))
{
LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind");
@@ -1808,7 +1804,6 @@
LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_reset");
}
- GNUNET_free (name_prefix);
return ret;
}
Modified: gnunet/src/psycstore/psyc_util_lib.c
===================================================================
--- gnunet/src/psycstore/psyc_util_lib.c 2015-09-05 23:44:03 UTC (rev
36332)
+++ gnunet/src/psycstore/psyc_util_lib.c 2015-09-05 23:44:08 UTC (rev
36333)
@@ -401,12 +401,17 @@
static void
transmit_data (struct GNUNET_PSYC_TransmitHandle *tmit)
{
- uint16_t data_size = GNUNET_PSYC_DATA_MAX_PAYLOAD;
+ int notify_ret = GNUNET_YES;
+ uint16_t data_size = 0;
char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA);
- int notify_ret = tmit->notify_data (tmit->notify_data_cls, &data_size,
&msg[1]);
+ if (NULL != tmit->notify_data)
+ {
+ data_size = GNUNET_PSYC_DATA_MAX_PAYLOAD;
+ notify_ret = tmit->notify_data (tmit->notify_data_cls, &data_size,
&msg[1]);
+ }
LOG (GNUNET_ERROR_TYPE_DEBUG,
"transmit_data (ret: %d, size: %u): %.*s\n",
notify_ret, data_size, data_size, &msg[1]);
@@ -461,10 +466,11 @@
static void
transmit_mod (struct GNUNET_PSYC_TransmitHandle *tmit)
{
- uint16_t max_data_size, data_size;
+ uint16_t max_data_size = 0;
+ uint16_t data_size = 0;
char data[GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD] = "";
struct GNUNET_MessageHeader *msg = (struct GNUNET_MessageHeader *) data;
- int notify_ret;
+ int notify_ret = GNUNET_YES;
switch (tmit->state)
{
@@ -472,12 +478,17 @@
{
struct GNUNET_PSYC_MessageModifier *mod
= (struct GNUNET_PSYC_MessageModifier *) msg;
- max_data_size = data_size = GNUNET_PSYC_MODIFIER_MAX_PAYLOAD;
msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MODIFIER);
msg->size = sizeof (struct GNUNET_PSYC_MessageModifier);
- notify_ret = tmit->notify_mod (tmit->notify_mod_cls, &data_size, &mod[1],
- &mod->oper, &mod->value_size);
+ if (NULL != tmit->notify_mod)
+ {
+ max_data_size = GNUNET_PSYC_MODIFIER_MAX_PAYLOAD;
+ data_size = max_data_size;
+ notify_ret = tmit->notify_mod (tmit->notify_mod_cls, &data_size, &mod[1],
+ &mod->oper, &mod->value_size);
+ }
+
mod->name_size = strnlen ((char *) &mod[1], data_size) + 1;
LOG (GNUNET_ERROR_TYPE_DEBUG,
"transmit_mod (ret: %d, size: %u + %u): %.*s\n",
@@ -498,11 +509,16 @@
}
case GNUNET_PSYC_MESSAGE_STATE_MOD_CONT:
{
- max_data_size = data_size = GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD;
msg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT);
msg->size = sizeof (struct GNUNET_MessageHeader);
- notify_ret = tmit->notify_mod (tmit->notify_mod_cls,
- &data_size, &msg[1], NULL, NULL);
+
+ if (NULL != tmit->notify_mod)
+ {
+ max_data_size = GNUNET_PSYC_MOD_CONT_MAX_PAYLOAD;
+ data_size = max_data_size;
+ notify_ret = tmit->notify_mod (tmit->notify_mod_cls,
+ &data_size, &msg[1], NULL, NULL);
+ }
tmit->mod_value_remaining -= data_size;
LOG (GNUNET_ERROR_TYPE_DEBUG,
"transmit_mod (ret: %d, size: %u): %.*s\n",
@@ -847,7 +863,8 @@
recv_error (struct GNUNET_PSYC_ReceiveHandle *recv)
{
if (NULL != recv->message_part_cb)
- recv->message_part_cb (recv->cb_cls, recv->message_id, 0, recv->flags,
NULL);
+ recv->message_part_cb (recv->cb_cls, NULL, recv->message_id, recv->flags,
+ 0, NULL);
if (NULL != recv->message_cb)
recv->message_cb (recv->cb_cls, recv->message_id, recv->flags, NULL);
@@ -1066,8 +1083,10 @@
}
if (NULL != recv->message_part_cb)
- recv->message_part_cb (recv->cb_cls, recv->message_id, 0, // FIXME:
data_offset
- recv->flags, pmsg);
+ recv->message_part_cb (recv->cb_cls, &recv->slave_key,
+ recv->message_id, recv->flags,
+ 0, // FIXME: data_offset
+ pmsg);
switch (ptype)
{
@@ -1144,8 +1163,10 @@
static void
-parse_message_part_cb (void *cls, uint64_t message_id, uint64_t data_offset,
- uint32_t flags, const struct GNUNET_MessageHeader *msg)
+parse_message_part_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
+ uint64_t message_id, uint32_t flags, uint64_t
data_offset,
+ const struct GNUNET_MessageHeader *msg)
{
struct ParseMessageClosure *pmc = cls;
if (NULL == msg)
@@ -1230,7 +1251,7 @@
memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg));
struct GNUNET_PSYC_ReceiveHandle *
- recv = GNUNET_PSYC_receive_create (NULL, &parse_message_part_cb, &cls);
+ recv = GNUNET_PSYC_receive_create (NULL, parse_message_part_cb, &cls);
GNUNET_PSYC_receive_message (recv, pmsg);
GNUNET_PSYC_receive_destroy (recv);
GNUNET_free (pmsg);
Modified: gnunet/src/util/client_manager.c
===================================================================
--- gnunet/src/util/client_manager.c 2015-09-05 23:44:03 UTC (rev 36332)
+++ gnunet/src/util/client_manager.c 2015-09-05 23:44:08 UTC (rev 36333)
@@ -191,6 +191,10 @@
size = ntohs (msg->size);
/* FIXME: decrease reconnect_delay gradually after a successful
reconnection */
}
+ else /* disconnected */
+ {
+ mgr->client_tmit = NULL;
+ }
size_t i = 0;
while (NULL != mgr->handlers[i].callback)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36333 - in gnunet/src: include multicast psyc psycstore util,
gnunet <=