summaryrefslogtreecommitdiffhomepage
path: root/svr-chansession.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2014-08-19 23:08:56 +0800
committerMatt Johnston <matt@ucc.asn.au>2014-08-19 23:08:56 +0800
commit6d2d3669f39f12182b79a0067f477b58948897f6 (patch)
tree710285eb2899e8dc49108f0d690edceb811d0644 /svr-chansession.c
parent1387654cc8ac3f14b1c144f838fee5d0f51921c0 (diff)
Make keepalive handling more robust, this should now match what OpenSSH does
Diffstat (limited to 'svr-chansession.c')
-rw-r--r--svr-chansession.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/svr-chansession.c b/svr-chansession.c
index 2a99362..6c73778 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -53,6 +53,7 @@ static void sesssigchild_handler(int val);
static void closechansess(struct Channel *channel);
static int newchansess(struct Channel *channel);
static void chansessionrequest(struct Channel *channel);
+static int sesscheckclose(struct Channel *channel);
static void send_exitsignalstatus(struct Channel *channel);
static void send_msg_chansess_exitstatus(struct Channel * channel,
@@ -61,6 +62,14 @@ static void send_msg_chansess_exitsignal(struct Channel * channel,
struct ChanSess * chansess);
static void get_termmodes(struct ChanSess *chansess);
+const struct ChanType svrchansess = {
+ 0, /* sepfds */
+ "session", /* name */
+ newchansess, /* inithandler */
+ sesscheckclose, /* checkclosehandler */
+ chansessionrequest, /* reqhandler */
+ closechansess, /* closehandler */
+};
/* required to clear environment */
extern char** environ;
@@ -968,16 +977,6 @@ static void execchild(void *user_data) {
dropbear_exit("Child failed");
}
-const struct ChanType svrchansess = {
- 0, /* sepfds */
- "session", /* name */
- newchansess, /* inithandler */
- sesscheckclose, /* checkclosehandler */
- chansessionrequest, /* reqhandler */
- closechansess, /* closehandler */
-};
-
-
/* Set up the general chansession environment, in particular child-exit
* handling */
void svr_chansessinitialise() {