diff options
author | Wayne Davison <wayned@users.sourceforge.net> | 2009-09-22 16:04:13 +0000 |
---|---|---|
committer | Wayne Davison <wayned@users.sourceforge.net> | 2009-09-22 16:04:13 +0000 |
commit | 2f8aaaf5e425f2285e028e35a52d0766067ab3fd (patch) | |
tree | 02b3a23ed9f9b5d6bc0521ac44e6a9fc7524e14e /Src/Modules/tcp.c | |
parent | 51409732d0e647661915fde0b15323005be7c9e8 (diff) | |
download | zsh-2f8aaaf5e425f2285e028e35a52d0766067ab3fd.tar.gz zsh-2f8aaaf5e425f2285e028e35a52d0766067ab3fd.tar.xz zsh-2f8aaaf5e425f2285e028e35a52d0766067ab3fd.zip |
27286: Made movefd() return the targetfd on success. Added
a little more error checking in the callers of movefd().
Diffstat (limited to 'Src/Modules/tcp.c')
-rw-r--r-- | Src/Modules/tcp.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Src/Modules/tcp.c b/Src/Modules/tcp.c index 2825cb978..3f92050ae 100644 --- a/Src/Modules/tcp.c +++ b/Src/Modules/tcp.c @@ -446,10 +446,7 @@ bin_ztcp(char *nam, char **args, Options ops, UNUSED(int func)) } if (targetfd) { - if (redup(sess->fd,targetfd) == -1) - sess->fd = -1; - else - sess->fd = targetfd; + sess->fd = redup(sess->fd, targetfd); } else { /* move the fd since no one will want to read from it */ @@ -547,8 +544,11 @@ bin_ztcp(char *nam, char **args, Options ops, UNUSED(int func)) } if (targetfd) { - redup(rfd, targetfd); - sess->fd = targetfd; + sess->fd = redup(rfd, targetfd); + if (sess->fd < 0) { + zerrnam(nam, "could not duplicate socket fd to %d: %e", targetfd, errno); + return 1; + } } else { sess->fd = rfd; @@ -662,8 +662,11 @@ bin_ztcp(char *nam, char **args, Options ops, UNUSED(int func)) else { if (targetfd) { - redup(sess->fd, targetfd); - sess->fd = targetfd; + sess->fd = redup(sess->fd, targetfd); + if (sess->fd < 0) { + zerrnam(nam, "could not duplicate socket fd to %d: %e", targetfd, errno); + return 1; + } } setiparam("REPLY", sess->fd); |