Commit e5896809 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

Really (I swear) implement the waitpipe in net_write

parent 55153f42
......@@ -284,7 +284,7 @@ __net_Read (vlc_object_t *restrict p_this, int fd, const v_socket_t *vs,
if (poll (ufd, sizeof (ufd) / sizeof (ufd[0]), -1) < 0)
{
if (errno =! EINTR)
if (errno != EINTR)
goto error;
continue;
}
......@@ -306,6 +306,7 @@ __net_Read (vlc_object_t *restrict p_this, int fd, const v_socket_t *vs,
{
if (ufd[1].revents)
{
assert (p_this->b_die);
msg_Dbg (p_this, "socket %d polling interrupted", fd);
#if defined(WIN32) || defined(UNDER_CE)
WSASetLastError (WSAEINTR);
......@@ -411,7 +412,7 @@ ssize_t __net_Write( vlc_object_t *p_this, int fd, const v_socket_t *p_vs,
if (errno != EINTR)
{
msg_Err (p_this, "Write error: %m");
goto out;
goto error;
}
continue;
}
......@@ -424,6 +425,15 @@ ssize_t __net_Write( vlc_object_t *p_this, int fd, const v_socket_t *p_vs,
if (ufd[1].revents)
break;
}
else
{
if (ufd[1].revents)
{
assert (p_this->b_die);
errno = EINTR;
goto error;
}
}
if (p_vs != NULL)
val = p_vs->pf_send (p_vs->p_sys, p_data, i_data);
......@@ -445,10 +455,10 @@ ssize_t __net_Write( vlc_object_t *p_this, int fd, const v_socket_t *p_vs,
i_total += val;
}
out:
if ((i_total > 0) || (i_data == 0))
return i_total;
error:
return -1;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment