diff options
author | Julius Bünger <buenger@mytum.de> | 2018-10-11 16:33:17 +0200 |
---|---|---|
committer | Julius Bünger <buenger@mytum.de> | 2018-10-11 16:33:17 +0200 |
commit | b5f74297733d8493881db455e234eeb3ee8cf9f9 (patch) | |
tree | d4c52d8996325ff435e44ddb5ca253a074fe6f7b /src/rps | |
parent | 2408ee6b254b5f67a6b50280dec6c66536abd1c1 (diff) | |
download | gnunet-b5f74297733d8493881db455e234eeb3ee8cf9f9.tar.gz gnunet-b5f74297733d8493881db455e234eeb3ee8cf9f9.zip |
RPS API: (Temporarily) Fix usage of stream request handles
Diffstat (limited to 'src/rps')
-rw-r--r-- | src/rps/rps_api.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/rps/rps_api.c b/src/rps/rps_api.c index 34b28cd6a..5c68e4337 100644 --- a/src/rps/rps_api.c +++ b/src/rps/rps_api.c | |||
@@ -434,12 +434,18 @@ void | |||
434 | GNUNET_RPS_stream_cancel (struct GNUNET_RPS_StreamRequestHandle *srh) | 434 | GNUNET_RPS_stream_cancel (struct GNUNET_RPS_StreamRequestHandle *srh) |
435 | { | 435 | { |
436 | struct GNUNET_RPS_Handle *rps_handle; | 436 | struct GNUNET_RPS_Handle *rps_handle; |
437 | struct GNUNET_RPS_StreamRequestHandle *srh_iter; | ||
437 | 438 | ||
438 | rps_handle = srh->rps_handle; | 439 | rps_handle = srh->rps_handle; |
439 | GNUNET_CONTAINER_DLL_remove (rps_handle->stream_requests_head, | 440 | srh_iter = rps_handle->stream_requests_head; |
440 | rps_handle->stream_requests_tail, | 441 | while (NULL != srh_iter && srh_iter != srh) srh_iter = srh_iter->next; |
441 | srh); | 442 | if (NULL != srh_iter) |
442 | GNUNET_free (srh); | 443 | { |
444 | GNUNET_CONTAINER_DLL_remove (rps_handle->stream_requests_head, | ||
445 | rps_handle->stream_requests_tail, | ||
446 | srh); | ||
447 | GNUNET_free (srh); | ||
448 | } | ||
443 | if (NULL == rps_handle->stream_requests_head) cancel_stream (rps_handle); | 449 | if (NULL == rps_handle->stream_requests_head) cancel_stream (rps_handle); |
444 | } | 450 | } |
445 | 451 | ||
@@ -542,6 +548,9 @@ handle_stream_input (void *cls, | |||
542 | NULL != srh_iter; | 548 | NULL != srh_iter; |
543 | srh_iter = srh_iter->next) | 549 | srh_iter = srh_iter->next) |
544 | { | 550 | { |
551 | GNUNET_CONTAINER_DLL_remove (srh_head_tmp, | ||
552 | srh_tail_tmp, | ||
553 | srh_iter); | ||
545 | GNUNET_CONTAINER_DLL_insert (h->stream_requests_head, | 554 | GNUNET_CONTAINER_DLL_insert (h->stream_requests_head, |
546 | h->stream_requests_tail, | 555 | h->stream_requests_tail, |
547 | srh_iter); | 556 | srh_iter); |
@@ -928,17 +937,27 @@ GNUNET_RPS_request_cancel (struct GNUNET_RPS_Request_Handle *rh) | |||
928 | void | 937 | void |
929 | GNUNET_RPS_disconnect (struct GNUNET_RPS_Handle *h) | 938 | GNUNET_RPS_disconnect (struct GNUNET_RPS_Handle *h) |
930 | { | 939 | { |
931 | GNUNET_MQ_destroy (h->mq); | ||
932 | if (NULL != h->stream_requests_head) | 940 | if (NULL != h->stream_requests_head) |
933 | { | 941 | { |
942 | struct GNUNET_RPS_StreamRequestHandle *srh_iter; | ||
943 | |||
934 | LOG (GNUNET_ERROR_TYPE_WARNING, | 944 | LOG (GNUNET_ERROR_TYPE_WARNING, |
935 | "Still waiting for replies\n"); | 945 | "Still waiting for replies\n"); |
946 | srh_iter = h->stream_requests_head; | ||
947 | while (NULL != srh_iter) | ||
948 | { | ||
949 | struct GNUNET_RPS_StreamRequestHandle *srh_tmp = srh_iter; | ||
950 | srh_iter = srh_iter->next; | ||
951 | GNUNET_RPS_stream_cancel (srh_tmp); | ||
952 | } | ||
936 | } | 953 | } |
937 | if (NULL != h->view_update_cb) | 954 | if (NULL != h->view_update_cb) |
938 | { | 955 | { |
939 | LOG (GNUNET_ERROR_TYPE_WARNING, | 956 | LOG (GNUNET_ERROR_TYPE_WARNING, |
940 | "Still waiting for view updates\n"); | 957 | "Still waiting for view updates\n"); |
958 | GNUNET_RPS_view_request_cancel (h); | ||
941 | } | 959 | } |
960 | GNUNET_MQ_destroy (h->mq); | ||
942 | GNUNET_free (h); | 961 | GNUNET_free (h); |
943 | } | 962 | } |
944 | 963 | ||