efl_io_reader/writer: always set 'can_*' to FALSE on errors.

If user tries to read or write and that fails then set 'can_read' or
'can_write' to false, regardless of the error code.
This commit is contained in:
Gustavo Sverzut Barbieri 2016-12-19 19:56:22 -02:00
parent 2666e927a5
commit 963e3a793d
7 changed files with 23 additions and 7 deletions

View File

@ -46,7 +46,7 @@ _efl_io_reader_fd_efl_io_reader_read(Eo *o, Efl_Io_Reader_Fd_Data *pd EINA_UNUSE
rw_slice->len = 0;
rw_slice->mem = NULL;
if (errno == EAGAIN) efl_io_reader_can_read_set(o, EINA_FALSE);
efl_io_reader_can_read_set(o, EINA_FALSE);
return errno;
}
}
@ -63,6 +63,7 @@ _efl_io_reader_fd_efl_io_reader_read(Eo *o, Efl_Io_Reader_Fd_Data *pd EINA_UNUSE
error:
rw_slice->len = 0;
rw_slice->mem = NULL;
efl_io_reader_can_read_set(o, EINA_FALSE);
return EINVAL;
}

View File

@ -47,7 +47,7 @@ _efl_io_writer_fd_efl_io_writer_write(Eo *o, Efl_Io_Writer_Fd_Data *pd EINA_UNUS
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
if (errno == EAGAIN) efl_io_writer_can_write_set(o, EINA_FALSE);
efl_io_writer_can_write_set(o, EINA_FALSE);
return errno;
}
}
@ -66,6 +66,7 @@ _efl_io_writer_fd_efl_io_writer_write(Eo *o, Efl_Io_Writer_Fd_Data *pd EINA_UNUS
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return EINVAL;
}

View File

@ -170,7 +170,7 @@ _efl_net_server_udp_client_efl_io_reader_read(Eo *o, Efl_Net_Server_Udp_Client_D
}
EOLIAN static Eina_Error
_efl_net_server_udp_client_efl_io_writer_write(Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Client_Data *pd, Eina_Slice *ro_slice, Eina_Slice *remaining)
_efl_net_server_udp_client_efl_io_writer_write(Eo *o, Efl_Net_Server_Udp_Client_Data *pd, Eina_Slice *ro_slice, Eina_Slice *remaining)
{
ssize_t r;
@ -189,6 +189,7 @@ _efl_net_server_udp_client_efl_io_writer_write(Eo *o EINA_UNUSED, Efl_Net_Server
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return err;
}
}
@ -207,6 +208,7 @@ _efl_net_server_udp_client_efl_io_writer_write(Eo *o EINA_UNUSED, Efl_Net_Server
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return EINVAL;
}

View File

@ -204,7 +204,7 @@ _efl_net_socket_fd_efl_io_reader_read(Eo *o, Efl_Net_Socket_Fd_Data *pd EINA_UNU
rw_slice->len = 0;
rw_slice->mem = NULL;
if (err == EAGAIN) efl_io_reader_can_read_set(o, EINA_FALSE);
efl_io_reader_can_read_set(o, EINA_FALSE);
return err;
}
}
@ -220,6 +220,7 @@ _efl_net_socket_fd_efl_io_reader_read(Eo *o, Efl_Net_Socket_Fd_Data *pd EINA_UNU
error:
rw_slice->len = 0;
rw_slice->mem = NULL;
efl_io_reader_can_read_set(o, EINA_FALSE);
return EINVAL;
}
@ -279,7 +280,7 @@ _efl_net_socket_fd_efl_io_writer_write(Eo *o, Efl_Net_Socket_Fd_Data *pd EINA_UN
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
if (err == EAGAIN) efl_io_writer_can_write_set(o, EINA_FALSE);
efl_io_writer_can_write_set(o, EINA_FALSE);
return err;
}
}
@ -299,6 +300,7 @@ _efl_net_socket_fd_efl_io_writer_write(Eo *o, Efl_Net_Socket_Fd_Data *pd EINA_UN
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return EINVAL;
}

View File

@ -532,7 +532,7 @@ _efl_net_socket_udp_efl_io_reader_read(Eo *o, Efl_Net_Socket_Udp_Data *pd, Eina_
rw_slice->len = 0;
rw_slice->mem = NULL;
if (err == EAGAIN) efl_io_reader_can_read_set(o, EINA_FALSE);
efl_io_reader_can_read_set(o, EINA_FALSE);
return err;
}
@ -586,6 +586,7 @@ _efl_net_socket_udp_efl_io_reader_read(Eo *o, Efl_Net_Socket_Udp_Data *pd, Eina_
error:
rw_slice->len = 0;
rw_slice->mem = NULL;
efl_io_reader_can_read_set(o, EINA_FALSE);
return EINVAL;
}
@ -610,7 +611,7 @@ _efl_net_socket_udp_efl_io_writer_write(Eo *o, Efl_Net_Socket_Udp_Data *pd, Eina
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
if (err == EAGAIN) efl_io_writer_can_write_set(o, EINA_FALSE);
efl_io_writer_can_write_set(o, EINA_FALSE);
return err;
}
}
@ -630,6 +631,7 @@ _efl_net_socket_udp_efl_io_writer_write(Eo *o, Efl_Net_Socket_Udp_Data *pd, Eina
if (remaining) *remaining = *ro_slice;
ro_slice->len = 0;
ro_slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return EINVAL;
}

View File

@ -211,6 +211,8 @@ _efl_io_buffer_efl_io_reader_read(Eo *o, Efl_Io_Buffer_Data *pd, Eina_Rw_Slice *
error:
rw_slice->len = 0;
rw_slice->mem = NULL;
efl_io_reader_can_read_set(o, EINA_FALSE);
return EINVAL;
}
@ -299,6 +301,8 @@ _efl_io_buffer_efl_io_writer_write(Eo *o, Efl_Io_Buffer_Data *pd, Eina_Slice *sl
error:
if (remaining) *remaining = *slice;
slice->len = 0;
slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return err;
}

View File

@ -300,6 +300,8 @@ _efl_io_queue_efl_io_reader_read(Eo *o, Efl_Io_Queue_Data *pd, Eina_Rw_Slice *rw
error:
rw_slice->len = 0;
rw_slice->mem = NULL;
efl_io_reader_can_read_set(o, EINA_FALSE);
return EINVAL;
}
@ -424,6 +426,8 @@ _efl_io_queue_efl_io_writer_write(Eo *o, Efl_Io_Queue_Data *pd, Eina_Slice *slic
error:
if (remaining) *remaining = *slice;
slice->len = 0;
slice->mem = NULL;
efl_io_writer_can_write_set(o, EINA_FALSE);
return err;
}