wget

Stanislav Meduna stano na trillian.eunet.sk
Pátek Březen 19 21:40:22 CET 1999


On 19 Mar 1999 15:36:55 GMT, Ondrej Palkovsky wrote:

: Mam podobny problem - na jednom stroji se "wget http://www.sbirka.cz"
: nedockam, na druhem ho mam okamzite. Tam kde se ho nedockam je 2.2.2, tam
: kde to jde okamzite je 2.2.1. Pritom provnani sitove komunikace je naprosto
: ekvivalentni. Pomohlo, ze jsem pridal parametr --header="Negotioate: trans".
: Pak to kupodivu zacalo fungovat(ale stejne nechapu, v cem je rozdil).

V 2.2.2 je chybka v TCP kode, prejavujuca sa deadlockom
spojeni, kde sa posielaju velke kusy a citaju sa male.
Prijimac zabudne zvacsit okno pre prijem a vysielac
neposle data niekam, kam sa nezmestia. Chyba je tam
uz veky, ale nieco ine poposuvalo casovanie tak,
ze sa nachylnost na nu zvysila.

Skuste 2.2.3 (fixov okolo TCP je tam dost) alebo aspon nasledovne

diff -u --recursive --new-file v2.2.2/linux/net/ipv4/tcp.c linux/net/ipv4/tcp.c
--- v2.2.2/linux/net/ipv4/tcp.c	Tue Feb 23 15:21:35 1999
+++ linux/net/ipv4/tcp.c	Sun Mar  7 10:12:19 1999
@@ -1070,6 +1070,7 @@
 	if(copied > 0) {
 		struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
 		__u32 rcv_window_now = tcp_receive_window(tp);
+		__u32 new_window = __tcp_select_window(sk);
 
 		/* We won't be raising the window any further than
 		 * the window-clamp allows.  Our window selection
@@ -1077,7 +1078,7 @@
 		 * checks are necessary to prevent spurious ACKs
 		 * which don't advertize a larger window.
 		 */
-		if((copied >= rcv_window_now) &&
+		if((new_window && (new_window >= rcv_window_now * 2)) &&
 		   ((rcv_window_now + tp->mss_cache) <= tp->window_clamp))
 			tcp_read_wakeup(sk);
 	}


Zdravi
-- 
				Stano



Další informace o konferenci Linux