efl_io_reader/writer: always set 'can_*' to FALSE on errors.
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Mon, 19 Dec 2016 21:56:22 +0000 (19:56 -0200)
committerGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Tue, 20 Dec 2016 12:18:32 +0000 (10:18 -0200)
If user tries to read or write and that fails then set 'can_read' or
'can_write' to false, regardless of the error code.

src/lib/ecore/efl_io_reader_fd.c
src/lib/ecore/efl_io_writer_fd.c
src/lib/ecore_con/efl_net_server_udp_client.c
src/lib/ecore_con/efl_net_socket_fd.c
src/lib/ecore_con/efl_net_socket_udp.c
src/lib/efl/interfaces/efl_io_buffer.c
src/lib/efl/interfaces/efl_io_queue.c

index a376355..a1f9931 100644 (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;
 }
 
index 3058c4a..d337f7b 100644 (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;
 
 }
index 1a4a46e..20cec66 100644 (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;
 }
 
index 6902c87..e79fd47 100644 (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;
 }
 
index 6c74e44..f30a57a 100644 (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;
 }
 
index 299fb56..88bdc49 100644 (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;
 }
 
index deda2d6..9458f28 100644 (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;
 }