View | Details | Raw Unified | Return to bug 1917 | Differences between
and this patch

Collapse All | Expand All

(-)channels.c (-1 / +5 lines)
Lines 213-218 channel_lookup(int id) Link Here
213
	case SSH_CHANNEL_OPEN:
213
	case SSH_CHANNEL_OPEN:
214
	case SSH_CHANNEL_INPUT_DRAINING:
214
	case SSH_CHANNEL_INPUT_DRAINING:
215
	case SSH_CHANNEL_OUTPUT_DRAINING:
215
	case SSH_CHANNEL_OUTPUT_DRAINING:
216
	case SSH_CHANNEL_ABANDONED:
216
		return (c);
217
		return (c);
217
	}
218
	}
218
	logit("Non-public channel %d, type %d.", id, c->type);
219
	logit("Non-public channel %d, type %d.", id, c->type);
Lines 536-541 channel_still_open(void) Link Here
536
		case SSH_CHANNEL_DYNAMIC:
537
		case SSH_CHANNEL_DYNAMIC:
537
		case SSH_CHANNEL_CONNECTING:
538
		case SSH_CHANNEL_CONNECTING:
538
		case SSH_CHANNEL_ZOMBIE:
539
		case SSH_CHANNEL_ZOMBIE:
540
		case SSH_CHANNEL_ABANDONED:
539
			continue;
541
			continue;
540
		case SSH_CHANNEL_LARVAL:
542
		case SSH_CHANNEL_LARVAL:
541
			if (!compat20)
543
			if (!compat20)
Lines 581-586 channel_find_open(void) Link Here
581
		case SSH_CHANNEL_OPENING:
583
		case SSH_CHANNEL_OPENING:
582
		case SSH_CHANNEL_CONNECTING:
584
		case SSH_CHANNEL_CONNECTING:
583
		case SSH_CHANNEL_ZOMBIE:
585
		case SSH_CHANNEL_ZOMBIE:
586
		case SSH_CHANNEL_ABANDONED:
584
			continue;
587
			continue;
585
		case SSH_CHANNEL_LARVAL:
588
		case SSH_CHANNEL_LARVAL:
586
		case SSH_CHANNEL_AUTH_SOCKET:
589
		case SSH_CHANNEL_AUTH_SOCKET:
Lines 628-633 channel_open_message(void) Link Here
628
		case SSH_CHANNEL_CLOSED:
631
		case SSH_CHANNEL_CLOSED:
629
		case SSH_CHANNEL_AUTH_SOCKET:
632
		case SSH_CHANNEL_AUTH_SOCKET:
630
		case SSH_CHANNEL_ZOMBIE:
633
		case SSH_CHANNEL_ZOMBIE:
634
		case SSH_CHANNEL_ABANDONED:
631
		case SSH_CHANNEL_MUX_CLIENT:
635
		case SSH_CHANNEL_MUX_CLIENT:
632
		case SSH_CHANNEL_MUX_LISTENER:
636
		case SSH_CHANNEL_MUX_LISTENER:
633
			continue;
637
			continue;
Lines 2495-2501 channel_input_close_confirmation(int typ Link Here
2495
	if (c == NULL)
2499
	if (c == NULL)
2496
		packet_disconnect("Received close confirmation for "
2500
		packet_disconnect("Received close confirmation for "
2497
		    "out-of-range channel %d.", id);
2501
		    "out-of-range channel %d.", id);
2498
	if (c->type != SSH_CHANNEL_CLOSED)
2502
	if (c->type != SSH_CHANNEL_CLOSED && c->type != SSH_CHANNEL_ABANDONED)
2499
		packet_disconnect("Received close confirmation for "
2503
		packet_disconnect("Received close confirmation for "
2500
		    "non-closed channel %d (type %d).", id, c->type);
2504
		    "non-closed channel %d (type %d).", id, c->type);
2501
	channel_free(c);
2505
	channel_free(c);
(-)channels.h (-1 / +2 lines)
Lines 55-61 Link Here
55
#define SSH_CHANNEL_ZOMBIE		14	/* Almost dead. */
55
#define SSH_CHANNEL_ZOMBIE		14	/* Almost dead. */
56
#define SSH_CHANNEL_MUX_LISTENER	15	/* Listener for mux conn. */
56
#define SSH_CHANNEL_MUX_LISTENER	15	/* Listener for mux conn. */
57
#define SSH_CHANNEL_MUX_CLIENT		16	/* Conn. to mux slave */
57
#define SSH_CHANNEL_MUX_CLIENT		16	/* Conn. to mux slave */
58
#define SSH_CHANNEL_MAX_TYPE		17
58
#define SSH_CHANNEL_ABANDONED		17	/* Abandoned session, eg mux */
59
#define SSH_CHANNEL_MAX_TYPE		18
59
60
60
#define CHANNEL_CANCEL_PORT_STATIC	-1
61
#define CHANNEL_CANCEL_PORT_STATIC	-1
61
62
(-)clientloop.c (+3 lines)
Lines 1105-1110 process_escapes(Channel *c, Buffer *bin, Link Here
1105
					chan_write_failed(c);
1105
					chan_write_failed(c);
1106
					mux_master_session_cleanup_cb(c->self,
1106
					mux_master_session_cleanup_cb(c->self,
1107
					    NULL);
1107
					    NULL);
1108
					c->type = SSH_CHANNEL_ABANDONED;
1109
					buffer_clear(&c->input);
1110
					chan_ibuf_empty(c);
1108
					return 0;
1111
					return 0;
1109
				} else
1112
				} else
1110
					quit_pending = 1;
1113
					quit_pending = 1;

Return to bug 1917