version 1.18, 1999/10/28 21:26:09 |
version 1.19, 1999/11/02 19:42:35 |
|
|
|
|
void channel_free(int channel) |
void channel_free(int channel) |
{ |
{ |
assert(channel >= 0 && channel < channels_alloc && |
if (channel < 0 || channel >= channels_alloc || |
channels[channel].type != SSH_CHANNEL_FREE); |
channels[channel].type == SSH_CHANNEL_FREE) |
|
packet_disconnect("channel free: bad local channel %d", channel); |
|
|
if(compat13) |
if(compat13) |
shutdown(channels[channel].sock, SHUT_RDWR); |
shutdown(channels[channel].sock, SHUT_RDWR); |
close(channels[channel].sock); |
close(channels[channel].sock); |
|
|
goto reject; |
goto reject; |
} |
} |
|
|
|
/* Check fake data length */ |
|
if (x11_fake_data_len != x11_saved_data_len) |
|
{ |
|
error("X11 fake_data_len %d != saved_data_len %d", |
|
x11_fake_data_len, x11_saved_data_len); |
|
ch->type = SSH_CHANNEL_OPEN; |
|
goto reject; |
|
} |
|
|
/* Received authentication protocol and data match our fake data. |
/* Received authentication protocol and data match our fake data. |
Substitute the fake data with real data. */ |
Substitute the fake data with real data. */ |
assert(x11_fake_data_len == x11_saved_data_len); |
|
memcpy(ucp + 12 + ((proto_len + 3) & ~3), |
memcpy(ucp + 12 + ((proto_len + 3) & ~3), |
x11_saved_data, x11_saved_data_len); |
x11_saved_data, x11_saved_data_len); |
|
|