Set guac_error in guac_select()
This commit is contained in:
parent
97f7249e60
commit
5214b1538d
@ -216,6 +216,12 @@ ssize_t guac_flush(GUACIO* io);
|
|||||||
* Waits for input to be available on the given GUACIO object until the
|
* Waits for input to be available on the given GUACIO object until the
|
||||||
* specified timeout elapses.
|
* specified timeout elapses.
|
||||||
*
|
*
|
||||||
|
* If an error occurs while waiting, a negative value is returned, and
|
||||||
|
* guac_error is set appropriately.
|
||||||
|
*
|
||||||
|
* If a timeout occurs while waiting, zero value is returned, and
|
||||||
|
* guac_error is set to GUAC_STATUS_INPUT_TIMEOUT.
|
||||||
|
*
|
||||||
* @param io The GUACIO object to wait for.
|
* @param io The GUACIO object to wait for.
|
||||||
* @param usec_timeout The maximum number of microseconds to wait for data, or
|
* @param usec_timeout The maximum number of microseconds to wait for data, or
|
||||||
* -1 to potentially wait forever.
|
* -1 to potentially wait forever.
|
||||||
|
@ -299,17 +299,28 @@ int guac_select(GUACIO* io, int usec_timeout) {
|
|||||||
|
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
struct timeval timeout;
|
struct timeval timeout;
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
/* No timeout if usec_timeout is negative */
|
||||||
if (usec_timeout < 0)
|
if (usec_timeout < 0)
|
||||||
return select(io->fd + 1, &fds, NULL, NULL, NULL);
|
retval = select(io->fd + 1, &fds, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
/* Handle timeout if specified */
|
||||||
|
else {
|
||||||
timeout.tv_sec = usec_timeout/1000000;
|
timeout.tv_sec = usec_timeout/1000000;
|
||||||
timeout.tv_usec = usec_timeout%1000000;
|
timeout.tv_usec = usec_timeout%1000000;
|
||||||
|
|
||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
FD_SET(io->fd, &fds);
|
FD_SET(io->fd, &fds);
|
||||||
|
|
||||||
return select(io->fd + 1, &fds, NULL, NULL, &timeout);
|
retval = select(io->fd + 1, &fds, NULL, NULL, &timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Properly set guac_error */
|
||||||
|
if (retval < 0) guac_error = GUAC_STATUS_INPUT_ERROR;
|
||||||
|
if (retval == 0) guac_error = GUAC_STATUS_INPUT_TIMEOUT;
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user