[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r20068 - gnunet/src/stream
From: |
gnunet |
Subject: |
[GNUnet-SVN] r20068 - gnunet/src/stream |
Date: |
Mon, 27 Feb 2012 14:24:59 +0100 |
Author: grothoff
Date: 2012-02-27 14:24:59 +0100 (Mon, 27 Feb 2012)
New Revision: 20068
Modified:
gnunet/src/stream/stream_api.c
Log:
-fix
Modified: gnunet/src/stream/stream_api.c
===================================================================
--- gnunet/src/stream/stream_api.c 2012-02-27 12:51:42 UTC (rev 20067)
+++ gnunet/src/stream/stream_api.c 2012-02-27 13:24:59 UTC (rev 20068)
@@ -182,6 +182,11 @@
GNUNET_SCHEDULER_TaskIdentifier ack_task_id;
/**
+ * Task scheduled to continue a read operation.
+ */
+ GNUNET_SCHEDULER_TaskIdentifier read_task;
+
+ /**
* The mesh handle
*/
struct GNUNET_MESH_Handle *mesh;
@@ -682,7 +687,9 @@
size_t read_size;
size_t valid_read_size;
- if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN) return;
+ socket->read_task = GNUNET_SCHEDULER_NO_TASK;
+ if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
+ return;
GNUNET_assert (NULL != socket->read_handle);
GNUNET_assert (NULL != socket->read_handle->proc);
@@ -786,10 +793,9 @@
else
socket->receive_buffer_boundaries[packet] = 0;
}
-
- GNUNET_SCHEDULER_add_continuation (&call_read_processor_task,
- socket,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+
+ socket->read_task = GNUNET_SCHEDULER_add_now (&call_read_processor_task,
+ socket);
}
@@ -806,6 +812,11 @@
{
struct GNUNET_STREAM_Socket *socket = cls;
+ if (socket->read_task != GNUNET_SCHEDULER_NO_TASK)
+ {
+ GNUNET_SCHEDULER_cancel (socket->read_task);
+ socket->read_task = GNUNET_SCHEDULER_NO_TASK;
+ }
GNUNET_assert (NULL != socket->read_handle);
GNUNET_free (socket->read_handle);
@@ -1895,6 +1906,14 @@
{
struct MessageQueue *head;
+ if (socket->read_task != GNUNET_SCHEDULER_NO_TASK)
+ {
+ /* socket closed with read task pending!? */
+ GNUNET_break (0);
+ GNUNET_SCHEDULER_cancel (socket->read_task);
+ socket->read_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+
/* Clear Transmit handles */
if (NULL != socket->transmit_handle)
{
@@ -2175,9 +2194,8 @@
/* if previous copy buffer is still not read call the data processor on it */
if (NULL != socket->copy_buffer)
- GNUNET_SCHEDULER_add_continuation (&call_read_processor_task,
- socket,
- GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+ socket->read_task = GNUNET_SCHEDULER_add_now (&call_read_processor_task,
+ socket);
else
prepare_buffer_for_read (socket);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20068 - gnunet/src/stream,
gnunet <=