comparison common-channel.c @ 938:c88dce72f6d2

Make sure client exit messages don't get lost
author Matt Johnston <matt@ucc.asn.au>
date Wed, 09 Jul 2014 00:13:17 +0800
parents 4ad38e223ccd
children 5daedffd0769
comparison
equal deleted inserted replaced
937:4ad38e223ccd 938:c88dce72f6d2
572 cbuf_free(channel->extrabuf); 572 cbuf_free(channel->extrabuf);
573 channel->extrabuf = NULL; 573 channel->extrabuf = NULL;
574 } 574 }
575 575
576 576
577 /* close the FDs in case they haven't been done 577 if (IS_DROPBEAR_SERVER || (channel->writefd != STDOUT_FILENO)) {
578 * yet (they might have been shutdown etc) */ 578 /* close the FDs in case they haven't been done
579 TRACE(("CLOSE writefd %d", channel->writefd)) 579 * yet (they might have been shutdown etc) */
580 close(channel->writefd); 580 TRACE(("CLOSE writefd %d", channel->writefd))
581 TRACE(("CLOSE readfd %d", channel->readfd)) 581 close(channel->writefd);
582 close(channel->readfd); 582 TRACE(("CLOSE readfd %d", channel->readfd))
583 TRACE(("CLOSE errfd %d", channel->errfd)) 583 close(channel->readfd);
584 close(channel->errfd); 584 TRACE(("CLOSE errfd %d", channel->errfd))
585 close(channel->errfd);
586 }
585 587
586 if (!channel->close_handler_done 588 if (!channel->close_handler_done
587 && channel->type->closehandler) { 589 && channel->type->closehandler) {
588 channel->type->closehandler(channel); 590 channel->type->closehandler(channel);
589 channel->close_handler_done = 1; 591 channel->close_handler_done = 1;