From ed9ff630293438f8a68a424136929f5b2ae090a2 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Wed, 27 Aug 2014 18:40:38 +0100 Subject: [PATCH] some more fixes --- src/cep_write_buffered.c | 6 ++++-- src/i_comm_manager.c | 8 +++++--- src/io_handler.c | 15 ++++----------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/cep_write_buffered.c b/src/cep_write_buffered.c index ab8f5cf..b871d6a 100644 --- a/src/cep_write_buffered.c +++ b/src/cep_write_buffered.c @@ -33,11 +33,13 @@ TR_cepWriteBuffered(TR_CommEndPoint this) switch (send) { case FALSE: // EAGAIN + TR_queuePutFirst(this->write_buffer, data); + break; + case -1: // FAILURE case -2: // remote close - return send; - default: + TR_delete(data); break; } diff --git a/src/i_comm_manager.c b/src/i_comm_manager.c index 8eb4efd..04c6fbf 100644 --- a/src/i_comm_manager.c +++ b/src/i_comm_manager.c @@ -122,9 +122,11 @@ TR_commManagerClose(void * _this, TR_Event event) while (! this->endpoints[--this->max_handle]); } - TR_eventSubjectFinalize( - (TR_EventSubject)this->endpoints[endpoint->transport->handle]); - this->endpoints[endpoint->transport->handle] = NULL; + if (this->endpoints[endpoint->transport->handle]) { + TR_eventSubjectFinalize( + (TR_EventSubject)this->endpoints[endpoint->transport->handle]); + this->endpoints[endpoint->transport->handle] = NULL; + } return TR_EVENT_DONE; } diff --git a/src/io_handler.c b/src/io_handler.c index 867f892..3981c0c 100644 --- a/src/io_handler.c +++ b/src/io_handler.c @@ -97,17 +97,10 @@ ioHandlerWrite(void * _this, TR_Event event) switch (TR_cepWriteBuffered((TR_CommEndPoint)event->subject)) { case FALSE: // EAGAIN - if (TR_cepHasPendingData((TR_CommEndPoint)event->subject)) { - revent = TR_eventSubjectEmit( - event->subject, - TR_CEP_EVENT_PENDING_DATA, - NULL); - } else { - revent = TR_eventSubjectEmit( - event->subject, - TR_CEP_EVENT_END_DATA, - NULL); - } + revent = TR_eventSubjectEmit( + event->subject, + TR_CEP_EVENT_PENDING_DATA, + NULL); break; case -1: // FAILURE