mirror of
https://repo.or.cz/socat.git
synced 2025-07-16 08:03:24 +00:00
Fixed: xiopoll(...) Bad file descriptor
This commit is contained in:
parent
1154e69d3e
commit
9beffd3193
2 changed files with 12 additions and 7 deletions
15
socat.c
15
socat.c
|
@ -865,11 +865,12 @@ int childleftdata(xiofile_t *xfd) {
|
|||
XIO_RDSTREAM(xfd)->para.exec.pid == 0) {
|
||||
struct timeval timeout = { 0, 0 };
|
||||
|
||||
if (XIO_READABLE(xfd) && !(XIO_RDSTREAM(xfd)->eof >= 2 && !XIO_RDSTREAM(xfd)->ignoreeof)) {
|
||||
in.fd = XIO_GETRDFD(xfd);
|
||||
in.events = POLLIN/*|POLLRDBAND*/;
|
||||
in.revents = 0;
|
||||
}
|
||||
if (XIO_RDSTREAM(xfd)->eof >= 2 && !XIO_RDSTREAM(xfd)->ignoreeof)
|
||||
return 0;
|
||||
|
||||
in.fd = XIO_GETRDFD(xfd);
|
||||
in.events = POLLIN/*|POLLRDBAND*/;
|
||||
in.revents = 0;
|
||||
do {
|
||||
int _errno;
|
||||
retval = xiopoll(&in, 1, &timeout);
|
||||
|
@ -877,7 +878,7 @@ int childleftdata(xiofile_t *xfd) {
|
|||
} while (retval < 0 && errno == EINTR);
|
||||
|
||||
if (retval < 0) {
|
||||
Error5("xiopoll({%d,%0o}, 1, {"F_tv_sec"."F_tv_usec"}): %s",
|
||||
Error5("xiopoll({%d,0%o}, 1, {"F_tv_sec"."F_tv_usec"}): %s",
|
||||
in.fd, in.events, timeout.tv_sec, timeout.tv_usec,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
|
@ -1133,7 +1134,7 @@ int _socat(void) {
|
|||
*/
|
||||
|
||||
if (retval < 0) {
|
||||
Error11("xiopoll({%d,%0o}{%d,%0o}{%d,%0o}{%d,%0o}, 4, {"F_tv_sec"."F_tv_usec"}): %s",
|
||||
Error11("xiopoll({%d,0%o}{%d,0%o}{%d,0%o}{%d,0%o}, 4, {"F_tv_sec"."F_tv_usec"}): %s",
|
||||
fds[0].fd, fds[0].events, fds[1].fd, fds[1].events,
|
||||
fds[2].fd, fds[2].events, fds[3].fd, fds[3].events,
|
||||
timeout.tv_sec, timeout.tv_usec, strerror(errno));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue