Link Here
|
187 |
static void |
187 |
static void |
188 |
channel_pre_open(struct ssh *ssh, Channel *c, |
188 |
channel_pre_open(struct ssh *ssh, Channel *c, |
189 |
fd_set *readset, fd_set *writeset) |
189 |
fd_set *readset, fd_set *writeset) |
190 |
@@ -2158,21 +2191,32 @@ channel_check_window(struct ssh *ssh, Channel *c) |
190 |
@@ -2158,18 +2191,29 @@ channel_check_window(struct ssh *ssh, Channel *c) |
191 |
c->local_maxpacket*3) || |
191 |
c->local_maxpacket*3) || |
192 |
c->local_window < c->local_window_max/2) && |
192 |
c->local_window < c->local_window_max/2) && |
193 |
c->local_consumed > 0) { |
193 |
c->local_consumed > 0) { |
Link Here
|
203 |
+ } |
203 |
+ } |
204 |
+#endif |
204 |
+#endif |
205 |
if (!c->have_remote_id) |
205 |
if (!c->have_remote_id) |
206 |
fatal(":%s: channel %d: no remote id", |
206 |
fatal_f("channel %d: no remote id", c->self); |
207 |
__func__, c->self); |
|
|
208 |
if ((r = sshpkt_start(ssh, |
207 |
if ((r = sshpkt_start(ssh, |
209 |
SSH2_MSG_CHANNEL_WINDOW_ADJUST)) != 0 || |
208 |
SSH2_MSG_CHANNEL_WINDOW_ADJUST)) != 0 || |
210 |
(r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || |
209 |
(r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || |
Link Here
|
211 |
- (r = sshpkt_put_u32(ssh, c->local_consumed)) != 0 || |
210 |
- (r = sshpkt_put_u32(ssh, c->local_consumed)) != 0 || |
212 |
+ (r = sshpkt_put_u32(ssh, c->local_consumed + addition)) != 0 || |
211 |
+ (r = sshpkt_put_u32(ssh, c->local_consumed + addition)) != 0 || |
213 |
(r = sshpkt_send(ssh)) != 0) { |
212 |
(r = sshpkt_send(ssh)) != 0) { |
214 |
fatal("%s: channel %i: %s", __func__, |
213 |
fatal_fr(r, "channel %i", c->self); |
215 |
c->self, ssh_err(r)); |
|
|
216 |
} |
214 |
} |
217 |
debug2("channel %d: window %d sent adjust %d", |
215 |
debug2("channel %d: window %d sent adjust %d", c->self, |
218 |
c->self, c->local_window, |
216 |
- c->local_window, c->local_consumed); |
219 |
- c->local_consumed); |
|
|
220 |
- c->local_window += c->local_consumed; |
217 |
- c->local_window += c->local_consumed; |
221 |
+ c->local_consumed + addition); |
218 |
+ c->local_window, c->local_consumed + addition); |
222 |
+ c->local_window += c->local_consumed + addition; |
219 |
+ c->local_window += c->local_consumed + addition; |
223 |
c->local_consumed = 0; |
220 |
c->local_consumed = 0; |
224 |
} |
221 |
} |
Link Here
|
360 |
c->datagram = 1; |
357 |
c->datagram = 1; |
361 |
--- work.clean/openssh-6.8p1/compat.c 2015-03-17 00:49:20.000000000 -0500 |
358 |
--- work.clean/openssh-6.8p1/compat.c 2015-03-17 00:49:20.000000000 -0500 |
362 |
+++ work/openssh-6.8p1/compat.c 2015-04-03 16:39:57.665699000 -0500 |
359 |
+++ work/openssh-6.8p1/compat.c 2015-04-03 16:39:57.665699000 -0500 |
363 |
@@ -177,6 +177,14 @@ |
360 |
@@ -144,11 +144,19 @@ |
364 |
debug("match: %s pat %s compat 0x%08x", |
361 |
|
365 |
version, check[i].pat, check[i].bugs); |
362 |
/* process table, return first match */ |
366 |
datafellows = check[i].bugs; /* XXX for now */ |
363 |
ssh->compat = 0; |
367 |
+#ifdef HPN_ENABLED |
364 |
+#ifdef HPN_ENABLED |
368 |
+ /* Check to see if the remote side is OpenSSH and not HPN */ |
365 |
+ /* Check to see if the remote side is OpenSSH and not HPN */ |
369 |
+ if (strstr(version,"OpenSSH") != NULL && |
366 |
+ if (strstr(version,"OpenSSH") != NULL && |
370 |
+ strstr(version,"hpn") == NULL) { |
367 |
+ strstr(version,"hpn") == NULL) { |
371 |
+ datafellows |= SSH_BUG_LARGEWINDOW; |
368 |
+ ssh->compat |= SSH_BUG_LARGEWINDOW; |
372 |
+ debug("Remote is NON-HPN aware"); |
369 |
+ debug("Remote is NON-HPN aware"); |
373 |
+ } |
370 |
+ } |
374 |
+#endif |
371 |
+#endif |
375 |
return check[i].bugs; |
372 |
for (i = 0; check[i].pat; i++) { |
|
|
373 |
if (match_pattern_list(version, check[i].pat, 0) == 1) { |
374 |
debug_f("match: %s pat %s compat 0x%08x", |
375 |
version, check[i].pat, check[i].bugs); |
376 |
- ssh->compat = check[i].bugs; |
377 |
+ ssh->compat |= check[i].bugs; |
378 |
return; |
376 |
} |
379 |
} |
377 |
} |
380 |
} |
378 |
--- work/openssh/compat.h.orig 2015-05-29 03:27:21.000000000 -0500 |
381 |
--- work/openssh/compat.h.orig 2015-05-29 03:27:21.000000000 -0500 |
Link Here
|
553 |
oCanonicalizeFallbackLocal, oCanonicalizePermittedCNAMEs, |
556 |
oCanonicalizeFallbackLocal, oCanonicalizePermittedCNAMEs, |
554 |
oStreamLocalBindMask, oStreamLocalBindUnlink, oRevokedHostKeys, |
557 |
oStreamLocalBindMask, oStreamLocalBindUnlink, oRevokedHostKeys, |
555 |
@@ -304,6 +313,16 @@ static struct { |
558 |
@@ -304,6 +313,16 @@ static struct { |
556 |
{ "updatehostkeys", oUpdateHostkeys }, |
559 |
{ "hostbasedkeytypes", oHostbasedAcceptedAlgorithms }, /* obsolete */ |
557 |
{ "hostbasedkeytypes", oHostbasedKeyTypes }, |
560 |
{ "pubkeyacceptedalgorithms", oPubkeyAcceptedAlgorithms }, |
558 |
{ "pubkeyacceptedkeytypes", oPubkeyAcceptedKeyTypes }, |
561 |
{ "pubkeyacceptedkeytypes", oPubkeyAcceptedAlgorithms }, /* obsolete */ |
559 |
+#ifdef NONE_CIPHER_ENABLED |
562 |
+#ifdef NONE_CIPHER_ENABLED |
560 |
+ { "noneenabled", oNoneEnabled }, |
563 |
+ { "noneenabled", oNoneEnabled }, |
561 |
+ { "noneswitch", oNoneSwitch }, |
564 |
+ { "noneswitch", oNoneSwitch }, |
Link Here
|
1046 |
+ debug ("Enabled Dynamic Window Scaling"); |
1049 |
+ debug ("Enabled Dynamic Window Scaling"); |
1047 |
+ } |
1050 |
+ } |
1048 |
+#endif |
1051 |
+#endif |
1049 |
debug3("%s: channel_new: %d", __func__, c->self); |
1052 |
debug3_f("channel_new: %d", c->self); |
1050 |
|
1053 |
|
1051 |
channel_send_open(ssh, c->self); |
1054 |
channel_send_open(ssh, c->self); |
1052 |
@@ -1885,6 +1979,15 @@ ssh_session2(struct ssh *ssh, struct passwd *pw) |
1055 |
@@ -1885,6 +1979,15 @@ ssh_session2(struct ssh *ssh, struct passwd *pw) |
Link Here
|
1152 |
/* |
1155 |
/* |
1153 |
* SSH2 key exchange |
1156 |
* SSH2 key exchange |
1154 |
*/ |
1157 |
*/ |
1155 |
@@ -156,10 +162,11 @@ order_hostkeyalgs(char *host, struct sockaddr *hostadd |
1158 |
@@ -156,11 +162,12 @@ order_hostkeyalgs(char *host, struct sockaddr *hostadd |
1156 |
return ret; |
1159 |
return ret; |
1157 |
} |
1160 |
} |
1158 |
|
1161 |
|
Link Here
|
1159 |
+static char *myproposal[PROPOSAL_MAX]; |
1162 |
+static char *myproposal[PROPOSAL_MAX]; |
1160 |
+static const char *myproposal_default[PROPOSAL_MAX] = { KEX_CLIENT }; |
1163 |
+static const char *myproposal_default[PROPOSAL_MAX] = { KEX_CLIENT }; |
1161 |
void |
1164 |
void |
1162 |
ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) |
1165 |
ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port, |
|
|
1166 |
const struct ssh_conn_info *cinfo) |
1163 |
{ |
1167 |
{ |
1164 |
- char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; |
1168 |
- char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT }; |
1165 |
char *s, *all_key; |
1169 |
char *s, *all_key; |