[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: set: disconnect, don't dest
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: set: disconnect, don't destroy yet |
Date: |
Tue, 20 Jun 2017 19:46:12 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new b8c0a4837 set: disconnect, don't destroy yet
b8c0a4837 is described below
commit b8c0a4837377e4953b05a7df1b6ab6ec31c704a9
Author: Florian Dold <address@hidden>
AuthorDate: Tue Jun 20 19:32:29 2017 +0200
set: disconnect, don't destroy yet
---
src/set/gnunet-service-set_union.c | 43 ++++++++++++++++++++++++++++----------
1 file changed, 32 insertions(+), 11 deletions(-)
diff --git a/src/set/gnunet-service-set_union.c
b/src/set/gnunet-service-set_union.c
index ca1049148..4ca10f0b4 100644
--- a/src/set/gnunet-service-set_union.c
+++ b/src/set/gnunet-service-set_union.c
@@ -1369,6 +1369,25 @@ send_client_element (struct Operation *op,
/**
+ * Destroy remote channel.
+ *
+ * @param op operation
+ */
+void destroy_channel (struct Operation *op)
+{
+ struct GNUNET_CADET_Channel *channel;
+
+ if (NULL != (channel = op->channel))
+ {
+ /* This will free op; called conditionally as this helper function
+ is also called from within the channel disconnect handler. */
+ op->channel = NULL;
+ GNUNET_CADET_channel_destroy (channel);
+ }
+}
+
+
+/**
* Signal to the client that the operation has finished and
* destroy the operation.
*
@@ -1448,10 +1467,11 @@ maybe_finish (struct Operation *op)
num_demanded);
if (0 == num_demanded)
{
+ struct GNUNET_MQ_Envelope *ev;
+
op->state->phase = PHASE_DONE;
send_client_done (op);
- _GSS_operation_destroy (op,
- GNUNET_YES);
+ destroy_channel (op);
}
}
}
@@ -1869,18 +1889,21 @@ handle_union_p2p_full_done (void *cls,
GNUNET_MQ_send (op->mq,
ev);
op->state->phase = PHASE_DONE;
- /* we now wait until the other peer disconnects */
+ /* we now wait until the other peer sends us the OVER message*/
}
break;
case PHASE_FULL_SENDING:
{
+ struct GNUNET_MQ_Envelope *ev;
+
LOG (GNUNET_ERROR_TYPE_DEBUG,
"got FULL DONE, finishing\n");
/* We sent the full set, and got the response for that. We're done. */
op->state->phase = PHASE_DONE;
+ GNUNET_CADET_receive_done (op->channel);
send_client_done (op);
- _GSS_operation_destroy (op,
- GNUNET_YES);
+ destroy_channel (op);
+ return;
}
break;
default:
@@ -2117,7 +2140,6 @@ handle_union_p2p_done (void *cls,
fail_union_operation (op);
return;
}
-
switch (op->state->phase)
{
case PHASE_INVENTORY_PASSIVE:
@@ -2135,8 +2157,9 @@ handle_union_p2p_done (void *cls,
* all our demands are satisfied, so that the active
* peer can quit if we gave him everything.
*/
+ GNUNET_CADET_receive_done (op->channel);
maybe_finish (op);
- break;
+ return;
case PHASE_INVENTORY_ACTIVE:
LOG (GNUNET_ERROR_TYPE_DEBUG,
"got DONE (as active partner), waiting to finish\n");
@@ -2148,15 +2171,14 @@ handle_union_p2p_done (void *cls,
* to the other peer once our demands are met.
*/
op->state->phase = PHASE_FINISH_CLOSING;
+ GNUNET_CADET_receive_done (op->channel);
maybe_finish (op);
- break;
+ return;
default:
GNUNET_break_op (0);
fail_union_operation (op);
return;
}
- GNUNET_CADET_receive_done (op->channel);
-
}
/**
@@ -2400,7 +2422,6 @@ union_copy_state (struct SetState *state)
static void
union_channel_death (struct Operation *op)
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "channel died, sending result to
client\n");
send_client_done (op);
_GSS_operation_destroy (op,
GNUNET_YES);
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: set: disconnect, don't destroy yet,
gnunet <=