Path: utzoo!mnetor!uunet!husc6!cmcl2!beta!hc!ames!elroy!mahendo!earle From: earle@mahendo.JPL.NASA.GOV (Greg Earle) Newsgroups: comp.windows.x Subject: Re: expo ftp bug? Message-ID: <5674@elroy.Jpl.Nasa.Gov> Date: 9 Mar 88 11:24:52 GMT References: <8803052358.aa24854@SMOKE.BRL.ARPA> <7786@tut.cis.ohio-state.edu> Sender: news@elroy.Jpl.Nasa.Gov Organization: Gainfully Unemployed Ltd., Lakeview Terrace CA Lines: 53 In-reply-to: bob@allosaur.cis.ohio-state.edu's message of 6 Mar 88 15:53:54 GMT expo is probably running vanilla SunOS 3.4. There are various TCP bugs in vanilla 3.4; one is that sometimes an initiator will for some bizarre reason present a 64K TCP window to the other end, and slowly but surely the window will get eaten away until it is zero, and then your TCP/IP service (oft times an FTP) will hang. Another is that when negotiating the Maximum Segment Size the packet size would get set to 512 bytes always. I have this feeling that one of these bugs is causing the famed 511999 bug (I was bitten as well). There is another variant to it; even more insidious is getting all 512000 bytes and discovering only after unsplitting that a file is corrupted. In both the 511999 and this case, the very first byte of the last 512-byte block of the file gets dropped. In the 511999 case, that is all there is to it. In the even-more-insidious case, the first byte is dropped and the last byte is *replicated* (i.e., instead of [0-512] we get [1-511]511). This happened to me with core.src.tar.Z.split.ac. In short: expo should be running either (at least) SunOS 3.4.2, or SunOS 3.5. If you have a Sun at the receiving end, make sure it is at 3.4.2 or 3.5, and both you and expo should install the tcp_mss patch. This patches the locations tcp_mss+0xac & tcp_mss+0xbc in /vmunix (and /dev/kmem) to be 1024, not 512 (this is a workaround - `Fixed in 4.0' ... ): yourmachine:1 # adb -w -k /vmunix /dev/mem <== sbr f06aa18 slr 649 physmem 1fe tcp_mss+0xac?d <== _tcp_mss+0xac: 512 tcp_mss+0xac?w 0x400 <== _tcp_mss+0xac: 0x200 = 0x400 tcp_mss+0xac/d <== _tcp_mss+0xac: 512 tcp_mss+0xac/w 0x400 <== _tcp_mss+0xac: 0x200 = 0x400 tcp_mss+0xbc?d <== _tcp_mss+0xbc: 512 tcp_mss+0xbc?w 0x400 <== _tcp_mss+0xbc: 0x200 = 0x400 tcp_mss+0xbc/d <== _tcp_mss+0xbc: 512 tcp_mss+0xbc?w 0x400 <== _tcp_mss+0xbc: 0x200 = 0x400 tcp_mss+0xbc?d <== _tcp_mss+0xbc: 1024 ^D <== yourmachine:2 # [ Sorry to turn xpert into a Sun kernel & TCP discussion, but the keepers of `expo' might want to consider this, due to the FTP problems ... - Greg ] -- Greg Earle earle@mahendo.JPL.NASA.GOV Indep. Sun consultant earle%mahendo@jpl-elroy.ARPA [aka:] (Gainfully Unemployed) earle%mahendo@elroy.JPL.NASA.GOV Lake View Terrace, CA ...!{cit-vax,ames}!elroy!jplgodo!mahendo!earle