[BACK]Return to channels.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/channels.c between version 1.426 and 1.427

version 1.426, 2023/01/06 02:47:18 version 1.427, 2023/01/18 02:00:10
Line 405 
Line 405 
                  */                   */
                 if (rfd != -1 && !isatty(rfd) &&                  if (rfd != -1 && !isatty(rfd) &&
                     (val = fcntl(rfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {                      (val = fcntl(rfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
                           c->restore_flags[0] = val;
                         c->restore_block |= CHANNEL_RESTORE_RFD;                          c->restore_block |= CHANNEL_RESTORE_RFD;
                         set_nonblock(rfd);                          set_nonblock(rfd);
                 }                  }
                 if (wfd != -1 && !isatty(wfd) &&                  if (wfd != -1 && !isatty(wfd) &&
                     (val = fcntl(wfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {                      (val = fcntl(wfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
                           c->restore_flags[1] = val;
                         c->restore_block |= CHANNEL_RESTORE_WFD;                          c->restore_block |= CHANNEL_RESTORE_WFD;
                         set_nonblock(wfd);                          set_nonblock(wfd);
                 }                  }
                 if (efd != -1 && !isatty(efd) &&                  if (efd != -1 && !isatty(efd) &&
                     (val = fcntl(efd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {                      (val = fcntl(efd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
                           c->restore_flags[2] = val;
                         c->restore_block |= CHANNEL_RESTORE_EFD;                          c->restore_block |= CHANNEL_RESTORE_EFD;
                         set_nonblock(efd);                          set_nonblock(efd);
                 }                  }
Line 498 
Line 501 
         if (fd == -1)          if (fd == -1)
                 return 0;                  return 0;
   
         if ((*fdp == c->rfd && (c->restore_block & CHANNEL_RESTORE_RFD) != 0) ||          /* restore blocking */
            (*fdp == c->wfd && (c->restore_block & CHANNEL_RESTORE_WFD) != 0) ||          if (*fdp == c->rfd &&
            (*fdp == c->efd && (c->restore_block & CHANNEL_RESTORE_EFD) != 0))              (c->restore_block & CHANNEL_RESTORE_RFD) != 0)
                 (void)fcntl(*fdp, F_SETFL, 0);  /* restore blocking */                  (void)fcntl(*fdp, F_SETFL, c->restore_flags[0]);
           else if (*fdp == c->wfd &&
               (c->restore_block & CHANNEL_RESTORE_WFD) != 0)
                   (void)fcntl(*fdp, F_SETFL, c->restore_flags[1]);
           else if (*fdp == c->efd &&
               (c->restore_block & CHANNEL_RESTORE_EFD) != 0)
                   (void)fcntl(*fdp, F_SETFL, c->restore_flags[2]);
   
         if (*fdp == c->rfd) {          if (*fdp == c->rfd) {
                 c->io_want &= ~SSH_CHAN_IO_RFD;                  c->io_want &= ~SSH_CHAN_IO_RFD;

Legend:
Removed from v.1.426  
changed lines
  Added in v.1.427