Diff

Differences From Artifact [f9fbbba89f]:

To Artifact [dd756c62c3]:


318
319
320
321
322
323
324
325
326
327
328

329
330
331
332
333
334
335
336
337
338
318
319
320
321
322
323
324




325



326
327
328
329
330
331
332







-
-
-
-
+
-
-
-







    if ((flags & FLAG_STDERR)) {
        int i;
        for (i = 0; i < len; i++)
            if (buf[i] != '\r')
                fputc(buf[i], stderr);
	return;
    }
    while (len--) 
        c_write1(*buf++);
}

    from_backend(1, buf, len);
static void c_writedata (char *buf, int len) {
    while (len--)
        c_write1(*buf++);
}

/*
 * Collect incoming data in the incoming packet buffer.
 * Decipher and verify the packet when it is completely read.
 * Drop SSH1_MSG_DEBUG and SSH1_MSG_IGNORE packets.
 * Update the *data and *datalen variables.
1670
1671
1672
1673
1674
1675
1676

1677

1678
1679
1680
1681
1682
1683
1684
1664
1665
1666
1667
1668
1669
1670
1671

1672
1673
1674
1675
1676
1677
1678
1679







+
-
+







    begin_session();
    while (1) {
	crReturnV;
	if (ispkt) {
	    if (pktin.type == SSH1_SMSG_STDOUT_DATA ||
                pktin.type == SSH1_SMSG_STDERR_DATA) {
		long len = GET_32BIT(pktin.body);
		from_backend(pktin.type == SSH1_SMSG_STDERR_DATA,
		c_writedata(pktin.body+4, len);
			     pktin.body+4, len);
	    } else if (pktin.type == SSH1_MSG_DISCONNECT) {
                ssh_state = SSH_STATE_CLOSED;
		logevent("Received disconnect request");
            } else if (pktin.type == SSH1_SMSG_AGENT_OPEN) {
                /* Remote side is trying to open a channel to talk to our
                 * agent. Give them back a local channel number. */
                unsigned i = 1;
2410
2411
2412
2413
2414
2415
2416

2417

2418
2419
2420
2421
2422
2423
2424
2405
2406
2407
2408
2409
2410
2411
2412

2413
2414
2415
2416
2417
2418
2419
2420







+
-
+







                if (ssh2_pkt_getuint32() != mainchan->localid)
                    continue;          /* wrong channel */
                if (pktin.type == SSH2_MSG_CHANNEL_EXTENDED_DATA &&
                    ssh2_pkt_getuint32() != SSH2_EXTENDED_DATA_STDERR)
                    continue;          /* extended but not stderr */
                ssh2_pkt_getstring(&data, &length);
                if (data) {
                    from_backend(pktin.type == SSH2_MSG_CHANNEL_EXTENDED_DATA,
                    c_writedata(data, length);
				 data, length);
                    /*
                     * Enlarge the window again at the remote side,
                     * just in case it ever runs down and they fail
                     * to send us any more data.
                     */
                    ssh2_pkt_init(SSH2_MSG_CHANNEL_WINDOW_ADJUST);
                    ssh2_pkt_adduint32(mainchan->remoteid);