version 1.64, 2017/01/21 11:32:04 |
version 1.65, 2017/06/09 06:47:13 |
|
|
{ |
{ |
Buffer m; |
Buffer m; |
u_int type, ver; |
u_int type, ver; |
|
int ret = -1; |
|
|
buffer_init(&m); |
buffer_init(&m); |
buffer_put_int(&m, MUX_MSG_HELLO); |
buffer_put_int(&m, MUX_MSG_HELLO); |
buffer_put_int(&m, SSHMUX_VER); |
buffer_put_int(&m, SSHMUX_VER); |
/* no extensions */ |
/* no extensions */ |
|
|
if (mux_client_write_packet(fd, &m) != 0) |
if (mux_client_write_packet(fd, &m) != 0) { |
fatal("%s: write packet: %s", __func__, strerror(errno)); |
debug("%s: write packet: %s", __func__, strerror(errno)); |
|
goto out; |
|
} |
|
|
buffer_clear(&m); |
buffer_clear(&m); |
|
|
/* Read their HELLO */ |
/* Read their HELLO */ |
if (mux_client_read_packet(fd, &m) != 0) { |
if (mux_client_read_packet(fd, &m) != 0) { |
buffer_free(&m); |
debug("%s: read packet failed", __func__); |
return -1; |
goto out; |
} |
} |
|
|
type = buffer_get_int(&m); |
type = buffer_get_int(&m); |
if (type != MUX_MSG_HELLO) |
if (type != MUX_MSG_HELLO) { |
fatal("%s: expected HELLO (%u) received %u", |
error("%s: expected HELLO (%u) received %u", |
__func__, MUX_MSG_HELLO, type); |
__func__, MUX_MSG_HELLO, type); |
|
goto out; |
|
} |
ver = buffer_get_int(&m); |
ver = buffer_get_int(&m); |
if (ver != SSHMUX_VER) |
if (ver != SSHMUX_VER) { |
fatal("Unsupported multiplexing protocol version %d " |
error("Unsupported multiplexing protocol version %d " |
"(expected %d)", ver, SSHMUX_VER); |
"(expected %d)", ver, SSHMUX_VER); |
|
goto out; |
|
} |
debug2("%s: master version %u", __func__, ver); |
debug2("%s: master version %u", __func__, ver); |
/* No extensions are presently defined */ |
/* No extensions are presently defined */ |
while (buffer_len(&m) > 0) { |
while (buffer_len(&m) > 0) { |
|
|
free(name); |
free(name); |
free(value); |
free(value); |
} |
} |
|
/* success */ |
|
ret = 0; |
|
out: |
buffer_free(&m); |
buffer_free(&m); |
return 0; |
return ret; |
} |
} |
|
|
static u_int |
static u_int |