summaryrefslogtreecommitdiff
path: root/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'session.c')
-rw-r--r--session.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/session.c b/session.c
index 0d6ebdaea..6ba2e7c77 100644
--- a/session.c
+++ b/session.c
@@ -33,7 +33,7 @@
33 */ 33 */
34 34
35#include "includes.h" 35#include "includes.h"
36RCSID("$OpenBSD: session.c,v 1.106 2001/10/09 21:59:41 markus Exp $"); 36RCSID("$OpenBSD: session.c,v 1.107 2001/10/10 22:18:47 markus Exp $");
37 37
38#include "ssh.h" 38#include "ssh.h"
39#include "ssh1.h" 39#include "ssh1.h"
@@ -1958,36 +1958,29 @@ session_close_by_channel(int id, void *arg)
1958{ 1958{
1959 Session *s = session_by_channel(id); 1959 Session *s = session_by_channel(id);
1960 if (s == NULL) { 1960 if (s == NULL) {
1961 debug("session_close_by_channel: no session for channel %d", id); 1961 debug("session_close_by_channel: no session for id %d", id);
1962 return; 1962 return;
1963 } 1963 }
1964 /* disconnect channel */ 1964 debug("session_close_by_channel: channel %d child %d", id, s->pid);
1965 channel_cancel_cleanup(s->chanid);
1966 s->chanid = -1;
1967
1968 debug("session_close_by_channel: channel %d kill %d", id, s->pid);
1969 if (s->pid != 0) { 1965 if (s->pid != 0) {
1970 /* notify child */ 1966 /* delay detach */
1971 if (kill(s->pid, SIGHUP) < 0) 1967 debug("session_close_by_channel: channel %d: has child", id);
1972 error("session_close_by_channel: kill %d: %s", 1968 return;
1973 s->pid, strerror(errno));
1974 } 1969 }
1970 /* detach by removing callback */
1971 channel_cancel_cleanup(s->chanid);
1972 s->chanid = -1;
1975 session_close(s); 1973 session_close(s);
1976} 1974}
1977 1975
1978void 1976void
1979session_close_all(void) 1977session_destroy_all(void)
1980{ 1978{
1981 int i; 1979 int i;
1982 for(i = 0; i < MAX_SESSIONS; i++) { 1980 for(i = 0; i < MAX_SESSIONS; i++) {
1983 Session *s = &sessions[i]; 1981 Session *s = &sessions[i];
1984 if (s->used) { 1982 if (s->used)
1985 if (s->chanid != -1) {
1986 channel_cancel_cleanup(s->chanid);
1987 s->chanid = -1;
1988 }
1989 session_close(s); 1983 session_close(s);
1990 }
1991 } 1984 }
1992} 1985}
1993 1986