View | Details | Raw Unified | Return to bug 2707
Collapse All | Expand All

(-)a/mux.c (-9 / +19 lines)
Lines 1570-1600 mux_client_hello_exchange(int fd) Link Here
1570
{
1570
{
1571
	Buffer m;
1571
	Buffer m;
1572
	u_int type, ver;
1572
	u_int type, ver;
1573
	int ret = -1;
1573
1574
1574
	buffer_init(&m);
1575
	buffer_init(&m);
1575
	buffer_put_int(&m, MUX_MSG_HELLO);
1576
	buffer_put_int(&m, MUX_MSG_HELLO);
1576
	buffer_put_int(&m, SSHMUX_VER);
1577
	buffer_put_int(&m, SSHMUX_VER);
1577
	/* no extensions */
1578
	/* no extensions */
1578
1579
1579
	if (mux_client_write_packet(fd, &m) != 0)
1580
	if (mux_client_write_packet(fd, &m) != 0) {
1580
		fatal("%s: write packet: %s", __func__, strerror(errno));
1581
		debug("%s: write packet: %s", __func__, strerror(errno));
1582
		goto out;
1583
	}
1581
1584
1582
	buffer_clear(&m);
1585
	buffer_clear(&m);
1583
1586
1584
	/* Read their HELLO */
1587
	/* Read their HELLO */
1585
	if (mux_client_read_packet(fd, &m) != 0) {
1588
	if (mux_client_read_packet(fd, &m) != 0) {
1586
		buffer_free(&m);
1589
		debug("%s: read packet failed", __func__);
1587
		return -1;
1590
		goto out;
1588
	}
1591
	}
1589
1592
1590
	type = buffer_get_int(&m);
1593
	type = buffer_get_int(&m);
1591
	if (type != MUX_MSG_HELLO)
1594
	if (type != MUX_MSG_HELLO) {
1592
		fatal("%s: expected HELLO (%u) received %u",
1595
		error("%s: expected HELLO (%u) received %u",
1593
		    __func__, MUX_MSG_HELLO, type);
1596
		    __func__, MUX_MSG_HELLO, type);
1597
		goto out;
1598
	}
1594
	ver = buffer_get_int(&m);
1599
	ver = buffer_get_int(&m);
1595
	if (ver != SSHMUX_VER)
1600
	if (ver != SSHMUX_VER) {
1596
		fatal("Unsupported multiplexing protocol version %d "
1601
		error("Unsupported multiplexing protocol version %d "
1597
		    "(expected %d)", ver, SSHMUX_VER);
1602
		    "(expected %d)", ver, SSHMUX_VER);
1603
		goto out;
1604
	}
1598
	debug2("%s: master version %u", __func__, ver);
1605
	debug2("%s: master version %u", __func__, ver);
1599
	/* No extensions are presently defined */
1606
	/* No extensions are presently defined */
1600
	while (buffer_len(&m) > 0) {
1607
	while (buffer_len(&m) > 0) {
Lines 1605-1612 mux_client_hello_exchange(int fd) Link Here
1605
		free(name);
1612
		free(name);
1606
		free(value);
1613
		free(value);
1607
	}
1614
	}
1615
	/* success */
1616
	ret = 0;
1617
 out:
1608
	buffer_free(&m);
1618
	buffer_free(&m);
1609
	return 0;
1619
	return ret;
1610
}
1620
}
1611
1621
1612
static u_int
1622
static u_int

Return to bug 2707