mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-01 22:58:40 -04:00
Handle interrupted system calls in connection code.
This commit is contained in:
parent
dbd54640f4
commit
fdea72a078
1 changed files with 6 additions and 2 deletions
|
|
@ -123,7 +123,9 @@ int wl_connection_data(struct wl_connection *connection, uint32_t mask)
|
||||||
iov[1].iov_len = b->tail;
|
iov[1].iov_len = b->tail;
|
||||||
count = 2;
|
count = 2;
|
||||||
}
|
}
|
||||||
len = readv(connection->fd, iov, count);
|
do {
|
||||||
|
len = readv(connection->fd, iov, count);
|
||||||
|
} while (len < 0 && errno == EINTR);
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"read error from connection %p: %m (%d)\n",
|
"read error from connection %p: %m (%d)\n",
|
||||||
|
|
@ -166,7 +168,9 @@ int wl_connection_data(struct wl_connection *connection, uint32_t mask)
|
||||||
iov[1].iov_len = b->head;
|
iov[1].iov_len = b->head;
|
||||||
count = 2;
|
count = 2;
|
||||||
}
|
}
|
||||||
len = writev(connection->fd, iov, count);
|
do {
|
||||||
|
len = writev(connection->fd, iov, count);
|
||||||
|
} while (len < 0 && errno == EINTR);
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
fprintf(stderr, "write error for connection %p: %m\n", connection);
|
fprintf(stderr, "write error for connection %p: %m\n", connection);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue