(*data)++, (*datalen)--;
}
-#ifdef FWHACK
- if (st->len == 0x52656d6f) { /* "Remo"te server has closed ... */
- st->len = 0x300; /* big enough to carry to end */
- }
-#endif
-
st->pad = 8 - (st->len % 8);
st->biglen = st->len + st->pad;
pktin.length = st->len - 5;
pktin.data[st->i] = *(*data)++;
(*datalen)--;
}
-#ifdef FWHACK
- if (!memcmp(pktin.data, "Remo", 4)) { /* "Remo"te server has closed ... */
- /* FIXME */
- }
-#endif
+
if (sccipher)
sccipher->decrypt(pktin.data, st->cipherblk);
if (eof_needed)
ssh_special(TS_EOF);
- ldisc_send(NULL, 0); /* cause ldisc to notice changes */
+ ldisc_send(NULL, 0, 0); /* cause ldisc to notice changes */
ssh_send_ok = 1;
ssh_channels = newtree234(ssh_channelcmp);
while (1) {
* if no pty is available or in other odd cases. Ignore */
} else if (pktin.type == SSH1_SMSG_EXIT_STATUS) {
send_packet(SSH1_CMSG_EXIT_CONFIRMATION, PKT_END);
+ /*
+ * In case `helpful' firewalls or proxies tack
+ * extra human-readable text on the end of the
+ * session which we might mistake for another
+ * encrypted packet, we close the session once
+ * we've sent EXIT_CONFIRMATION.
+ */
+ ssh_state = SSH_STATE_CLOSED;
+ crReturnV;
} else {
bombout(("Strange packet received: type %d", pktin.type));
crReturnV;
if (pktin.type != SSH2_MSG_CHANNEL_SUCCESS) {
if (pktin.type != SSH2_MSG_CHANNEL_FAILURE) {
- bombout(("Server got confused by X11 forwarding request"));
+ bombout(("Unexpected response to X11 forwarding request:"
+ " packet type %d", pktin.type));
crReturnV;
}
logevent("X11 forwarding refused");
if (pktin.type != SSH2_MSG_REQUEST_SUCCESS) {
if (pktin.type != SSH2_MSG_REQUEST_FAILURE) {
- bombout(("Server got confused by port forwarding request"));
+ bombout(("Unexpected response to port "
+ "forwarding request: packet type %d",
+ pktin.type));
crReturnV;
}
logevent("Server refused this port forwarding");
if (pktin.type != SSH2_MSG_CHANNEL_SUCCESS) {
if (pktin.type != SSH2_MSG_CHANNEL_FAILURE) {
- bombout(
- ("Server got confused by agent forwarding request"));
+ bombout(("Unexpected response to agent forwarding request:"
+ " packet type %d", pktin.type));
crReturnV;
}
logevent("Agent forwarding refused");
if (pktin.type != SSH2_MSG_CHANNEL_SUCCESS) {
if (pktin.type != SSH2_MSG_CHANNEL_FAILURE) {
- bombout(("Server got confused by pty request"));
+ bombout(("Unexpected response to pty request:"
+ " packet type %d", pktin.type));
crReturnV;
}
c_write_str("Server refused to allocate pty\r\n");
} while (pktin.type == SSH2_MSG_CHANNEL_WINDOW_ADJUST);
if (pktin.type != SSH2_MSG_CHANNEL_SUCCESS) {
if (pktin.type != SSH2_MSG_CHANNEL_FAILURE) {
- bombout(("Server got confused by shell/command request"));
+ bombout(("Unexpected response to shell/command request:"
+ " packet type %d", pktin.type));
crReturnV;
}
/*
/*
* Transfer data!
*/
- ldisc_send(NULL, 0); /* cause ldisc to notice changes */
+ ldisc_send(NULL, 0, 0); /* cause ldisc to notice changes */
ssh_send_ok = 1;
while (1) {
static int try_send;