diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-01-09 07:10:37 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-01-09 07:10:37 +0100 |
commit | daf0c12b555bc2baf59b97a7279a8f3f5db16511 (patch) | |
tree | 258fdfe960affac59f3cdecf807d6679df20dfc2 /src/cadet/gnunet-service-cadet_peer.c | |
parent | 73b0f06dd9112163e4a1f89f3218ff0ecddbcd76 (diff) | |
download | gnunet-daf0c12b555bc2baf59b97a7279a8f3f5db16511.tar.gz gnunet-daf0c12b555bc2baf59b97a7279a8f3f5db16511.zip |
fix crashes caused by DLL removes preceeding DLL inserts
Diffstat (limited to 'src/cadet/gnunet-service-cadet_peer.c')
-rw-r--r-- | src/cadet/gnunet-service-cadet_peer.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cadet/gnunet-service-cadet_peer.c b/src/cadet/gnunet-service-cadet_peer.c index c312d56bf..9835e5d5e 100644 --- a/src/cadet/gnunet-service-cadet_peer.c +++ b/src/cadet/gnunet-service-cadet_peer.c | |||
@@ -1106,6 +1106,7 @@ call_peer_cont (struct CadetPeerQueue *q, int sent) | |||
1106 | q->c, q->c_fwd, sent, | 1106 | q->c, q->c_fwd, sent, |
1107 | q->type, q->payload_type, q->payload_id, | 1107 | q->type, q->payload_type, q->payload_id, |
1108 | q->size, wait_time); | 1108 | q->size, wait_time); |
1109 | q->cont = NULL; | ||
1109 | } | 1110 | } |
1110 | GNUNET_CONTAINER_DLL_remove (q->peer->q_head, q->peer->q_tail, q); | 1111 | GNUNET_CONTAINER_DLL_remove (q->peer->q_head, q->peer->q_tail, q); |
1111 | } | 1112 | } |
@@ -1191,7 +1192,8 @@ GCP_send (struct CadetPeer *peer, | |||
1191 | q->payload_id = payload_id; | 1192 | q->payload_id = payload_id; |
1192 | q->c = c; | 1193 | q->c = c; |
1193 | q->c_fwd = fwd; | 1194 | q->c_fwd = fwd; |
1194 | GNUNET_MQ_notify_sent (q->env, mq_sent, q); | 1195 | GNUNET_MQ_notify_sent (q->env, &mq_sent, q); |
1196 | GNUNET_CONTAINER_DLL_insert (peer->q_head, peer->q_tail, q); | ||
1195 | 1197 | ||
1196 | if (GNUNET_YES == q->management_traffic) | 1198 | if (GNUNET_YES == q->management_traffic) |
1197 | { | 1199 | { |
@@ -1206,6 +1208,7 @@ GCP_send (struct CadetPeer *peer, | |||
1206 | q->payload_id, GCC_2s (c), GC_f2s (q->c_fwd)); | 1208 | q->payload_id, GCC_2s (c), GC_f2s (q->c_fwd)); |
1207 | GNUNET_MQ_discard (q->env); | 1209 | GNUNET_MQ_discard (q->env); |
1208 | call_peer_cont (q, GNUNET_YES); | 1210 | call_peer_cont (q, GNUNET_YES); |
1211 | GNUNET_CONTAINER_DLL_remove (peer->q_head, peer->q_tail, q); | ||
1209 | GNUNET_free (q); | 1212 | GNUNET_free (q); |
1210 | return NULL; | 1213 | return NULL; |
1211 | } | 1214 | } |
@@ -1213,7 +1216,6 @@ GCP_send (struct CadetPeer *peer, | |||
1213 | peer->queue_n++; | 1216 | peer->queue_n++; |
1214 | } | 1217 | } |
1215 | 1218 | ||
1216 | GNUNET_CONTAINER_DLL_insert (peer->q_head, peer->q_tail, q); | ||
1217 | GCC_check_connections (); | 1219 | GCC_check_connections (); |
1218 | return q; | 1220 | return q; |
1219 | } | 1221 | } |