[0Q].KGK@S,)!'0>[C]45GNHBY+3TTV%OLM66G8MFJ-?GQJ^^&04ZT
M!]7/DO-DSM,3'Q-U-(X.+\#(/;;3[3Y:-/L5,0=T@&!]Y15.4NT5*[U-UI10
MP[#<;^B/=;#.V)ET::HR'(.&7H-WY%334^$L[1=Y^9*L;J+KES!<CL7R@5.:
MBZ=Z*:)!;JZIJE^3#B_Q8.2'\7K&OV2VL0Y_Y.0]KLK%"U;50IO-6*P6R.2,
M;G(E$,'6P-F]!>ZG2!"2Q!*,:E^PAW,U'O[NI[!)DO@]KAQ>)0W;NHW(M3T&
M?XZZW3I>L?$LXT_5M))1IT?(_-?0F]UE&K)7NERPJE?_?RC/6C-P:^2!>>L:
MY-65*MT"4CA,O?R6P+JU,JML["K=/*G64%BY\K_-7=UOVS80?_9_H>AERJ(X
ML>RDR=(,*+:'&1C:8NGC7I1(28395F;)!?J0_[V\.QYYI"A_U5T7%&BK2!1U
M//(^^+L?0\%U$KM)>C;1$*UIXTQ[`52<9UD#Y3ZOHT(1[.PC!O;\.LVRB81#
M'T(P6M>.BAIO=O+O_*4!PM3?\@4DA>#KR/PYWQTS0!^`^ZIYW?@MEA^J"9.K
MY:`IV]_I,M5;')M\[W<8J_]@C(+*/+E6<9HAPD,&232'%G\DUYQ$K6=BHQ_B
M6EG?*'_@=U"*$5-%-)1E('WEO+2VP7L$=X;@.>#-$6Z([X68KV:#I'K,K&J0
M05==9?<&/0QEG^Z_M)BSGCY2"J-J^'F$O.(J\+B:8?Y0N:JZ$#!R=@B''-QF
MV56:329B4\H(;;!.9#A*QB)HDV"V,B0E66\+8%"&NN:6<0:J718<4$9$;.:X
ML5?SKWGS]#S,BR*)'\@ZGH*]B[5].T,['!L"-7L&@S_8_C>@6;/]Z8RE[A")
MZIM';9]A"^K^I=+]-Q>6!!+[K;H]5;)Y`@!+OFQ*]9]DJ8N[A1->J95CE(++
MK98);7)Z9$SUBB#E^*02=^*<5<[HN1E<9XLWHMPSK6[VLCLQ1%VN>EX-!55,
M@<_"KQK(?>4A_#I'#Z=IH0:MY+LJ3CP[PDL@688WH>)?7*;9I>74.8#(=I!9
MC]"VDQJHE"NL'FEM*:Z-\@H?<)"EHVLW@V2SUYP/V\6C=93!.C[&M;V5K,_#
M>;[\YX[Y6(F>$3YFS4O,5WE4;2'_F9OK767@+Y_R;3V7IYM#[UD5=S<Z`WMO
MGP2Y:C@G8IBRT&L,U(I`?L`/;X0Y@6S*_:J:%8!_>6[G,TZ-X\88>!:\QL%.
MH7@0+KMGA\"<4ZM4=G7I)O!?#<,@SH'=PI^("S2W5A#LW-9*0@[2H$\]UAHB
MJR*B/G);17'B>3QWI\^,BO$70MEWW/<?^-Z1#U;$G4^4?SUR5@^]PV$HCCX]
M@ZNH-SG4%Z:0(Z#M#OS_$#FVE-FH&^54M?FR39Q-+3.Y-[@*\'6Q=7$'C0G*
MJK))X&'ZI7`_^R("AT^P0_#7%RS9/3[?"Q<[>=(5[]DAK!RG/$1TOV<4A=`J
MXZ#;%]:>ERZP_"2KFL.IZRP=C[R)?ZCQYDFZY3!O5:G\XJ6V7ORRY-)+<?X(
MS;'1)-W="2?E#N7QAN`2`<E@80*QY6#`L]N$F/3&;HQ)UP\39%8'##)=%1Z$
MM'?@*FX8FY!E8Q4O78H@DWYTI<8?ZKWE$E<<XU*)7VC0PZFS:2\)U@6.Q$U?
M2[IVGGXB8<N4[6<_'3NW<8+Z%N_U\M^GD3-G-[LD&\)DUV?II+QJ#J-`08RI
MBGR7L2.,7?W&(_>SPK;;_=ELPV4WCWS,Q!H[?M0!=O0L$IUU4W*AC4=7Z7CL
M1.D[*1RL3=OE/C@</I*Y8.>,O_`P&@=N9_^MQ[?:TK5ZU3W;L/1*@08![=DH
MG60"JWMQ?IU>7!MFI4'=4`U'$K\]RW_5[H*]^/<B=F@0]'X65:K#X7I1_O!0
M+PNLSD47"E"$E^/SE'%G9X!9I@V\AG,'!K&#J#'-NT$M`NMLHH^NZ[`]'CLM+[/Z@8E''#Y(N``PSH):Q!6"NQ4]U<1^"A"#EA[/E1FF<XV`J(M>S8"9^Y)P
MULK85BVU1XA,KD%'S.("(7RJR:(L5B`(PD3^NRI!++IM;@KN6^2?*ZC)HA:!
MDE.9*@`8V@\AWJVF5!H";(1*^\K/N7(;*KLG2.<,%A6>]KK0Q>H$SJL7LR_J
MJ5F%F+1\]E0K,_@\U]7O1=5HZX3^\+(L&P"O58"6HXU72+53:P^VZB0F/*F'
MUK&L!%2H7Q?E#)!V+[`CB.<.1G,X_N-E5OHM8F<06`<$U^T+OUG<$JT6;36#
M/)+J6Z5BQ)PPIDI/N#4:*22*:5:(M'W74G2`$%;21(TWPBVQ!SA'-*K:IIP]
M:L8BW;67U5*-+.:XGG/D<2&B,362S`B`-\(&E\'9.\(0+`#ZBB6$((RA.2[7
M<6,=+B;BUW,?ZP#ZA8PT?-QR$+EP':>#R9J&4HG:-\Y9"'"5=ETV34J@45LG
MNH)5]/)6O"E`U\O[9[J4XEN8VD_P$)H[91D,,<:4^##RQU)-#/!T7:GC!SB6
M!'H?W(#N#!=R-4(F0V-?X3Q:H,@=#H>(!D<^#D0W`[W_4!;J4Y$;I%<3<51"
MP).70QCB'3HS+Z2WW7"BE70=PV,DSGH"O@-"_[9.5U8+1KBJ!Y+C_DX]`G_(
MK%<:1GE#M$+K!WM/UGK4O=YVZD9,C?^[6M2V\A',YH]3"NR(KQ*]7=I/)007
M=MWT+PA[,4Z?,#FH[$KX6*RP%"V\Q9<"Q`%=TNIN[R7_CUY[O:;ZU7D[E1.F
M&8RGCX86OS:+<N"Y(1V:)R[2P7GB@CE8K:\)3?":N)?9X>Z4KSH>^,E6^-Y,
M:/54'$,)!$*:"PA6+$"/@0/P"*BJ'%@+IQ+D1OI?()\-M^8;2$*S()Y+TK=E
M-Y'48(^*POWP&W_5TT\$788NG=1?X//,RP"G5-"D2Z4%LK]]*IAU2:\M7.[R
M@%WL4;@LF_6;'/\R>=-?K_QFDEZ92ER<RVJU?DM;2CJ*0A#9.45+D7<8/2.)
MMX'@`FA2=1B7JA!D\=A#4,HSY/$QVRT!&'NO3,['&OEEG;,B/1RS07'&G8-V
M0-(D!@[6#B^&&UA/\=!R"\29WD4?/GZ:?GC_[L^C0XH)F&"A2Y)C%H%+/Y\!
M`-C<!)]X"M5FWKT"^_T]Q!T&]E^DHY'=?E:F7*UD">9O8Z7@,:=Q(0!*L?4`
7"[,^JM#_HVGI\!U</OL5_67NGJN$````
`
end
(Review ID: 108487)
======================================================================
Name: krC82822 Date: 12/17/2000
java version "1.2.1"
Classic VM (build JDK-1.2.1-A, native threads)
NOTE: My build includes my original changes to the FTP URL (Bug ID 4269403).
This is a continuation of a previous patch (Bug ID 4269403) by the same author.
The previous patch introduced the sharing of FtpClient objects to improve
performance when transferring multiple files. Some of the changes introduced by
4269403 violated RFC1738 and, as to be expected, proved to be a problem when the
ftp server ran on an MVS platform.
Summary of changes:
FtpClient.java
--------------
1) Removed home directory (See preceeding comments).
2) Declared sendServer/readServerResponse to include them in the javadoc.
3) Implemented URL-PATH interpretation per RFC1738 section 3.2. The
protected method, performAction, has been written to provide a re-usable
implementation.
RFC1738 has resulted in the following changes:
1) The path components, the text between the slashes (/), is now assumed to
be URL encoded. Spaces are expected to have been replaced by plus signs (+) and
restricted characters should be encoded as %oo where oo is an octal number. For
partial backwards-compatibility, decoding failures leave the component
unchanged.
2) The suffix ';type=<typecode>' where <typecode> is one of a, i, or d may be
appended to the path to specify the transfer mode. A typecode of 'a' indicates
ASCII, or text, transfer. Binary, or image, transfers are indicated by the 'i'
typecode and by omitting the entire typecode suffix. The directory typecode,
'd', indicates that the URL input stream should return the results of performing
the NLST command. This is effectively the same as using an FTP URL to get a
directory listing except that the NLST output will consist of a plain text
listing with one file per line.
3) The text following a literal pound (#) character is no longer ignored.
4) The issueCommandCheck method uses the new performAction to correctly
interprete the URL-PATH contained within the command string.
5) Added code to set the file transfer mode (binary/text). During text
transfers, the ftp server transparently handles adding/removing the cntl-M when
working with Windows platforms and my MVS server handles the conversion of ASCII
to EBCDIC.
6) The login procedure has been rewritten to only send the password when it
is requested by the server. RFC1738 states that the URL's password component is
OPTIONAL so FtpClient shouldn't send an invalid default if it wasn't requested.
7) Bug fix. Throws FtpLoginException if the FTP server requests the user's
account. FTP URL's do not support account infomation.
8) Added getCommandSocket to share the socket creation code used in get and
put methods. The getCommandSocket method uses the new performAction method so
this change provides RFC1738 support to the get/put methods.
9) Added nlst method to support the directory typecode specified by RFC1738.
10) Bug fix. The openDataConnection method throws an IOException but NEVER a
FileNotFoundException. Therefore, the catch clause must use IOException.
11) Enhanced the exception handling in the situation whereby the
FtpProtocolException is thrown after parsing the URL into individual directories
and a file name. In the original code, an exception was thrown, FtpClient
attempted to handle the exception but fails with a FtpProtocolException, then
the ORIGINAL exception is thrown to the caller. What the caller never saw was
the reason that FtpClient failed to recover from this exception. In the new
code, the second FtpProtocolException is thrown to the caller with a reference
to the ORIGINAL exception. As a result, the caller will see both why
FtpClient's exception handler failed and why the handler was originally called.
12) Added delete and pasv methods for future use.
13) Added binary(boolean) method to toggle between calls to existing binary()
and ascii() methods.
FtpLoginException.java
----------------------
Added constructor for building a FtpLoginException that references a root, or
original, exception. This change makes use of the modified
FtpProtocolException.
FtpProtocolException.java
-------------------------
Major rewrite to support exception chains. These chains permit reporting both
the original exception and any exception(s) thrown by the exception handlers.
The new printStackTrace methods automatically display the exception chains so
that the typical exception handler need not be changed.
FtpURLConnection.java
---------------------
1) Added support for RFC1738's type component.
2) Added code to correct the parse errors performed by java.net.URL and the
sun.net.www.protocol.ftp.Handler classes.
Note: Someone should be tasked with generalizing java.net.URL to handle
schema-specific parsers.
* The leading slash (/) separating the URL-PATH from the URL-HOST is NOT part
of the file name.
* The pound (#) character and the text following are no longer ignored.
* The optional transfer mode suffix ';type=<typecode>' is no longer
considered to be part of the file name.
2) Since bug id 4269403, all ftp connection objects share a set of ftp client
objects so that multiple files can be transferred using a single command
connection. This model proved to be faulty when connecting to a ftp server on a
MVS platform as it was not possible to restore a FtpClient to its original state
(i.e. the original working directory). The solution introduced here was to
create a FtpSharedClient class which detects when the cd method is called. When
the cd method is called, FtpSharedClient arranges for the connection to have its
own unique FtpClient object. This solution is fully compliant with RFC1630 and
the control optimization discussed in RFC1738 paragraph 3.2.5.
3) The getInputStream() now performs the same protocol consistency check (i.e.
doInput must be true) as getOutputStream.
4) The FtpURLConnection constructor now throws a java.io.IOException since it
has to do some of the parsing that should have been performed by java.net.URL.
5) It is no longer a syntax error to specify a user but not a password (See
RFC1738 section 3.1).
6) The FtpClient is set to binary/text mode per the connection's flag.
7) Added code to interprete the typecode 'd' (;type=d) as request to perform
the NLST command.
Handler.java
------------
It is legal, per RFC1738, for the FTP URL to not specify a password when the
user name is specified.
TelnetOutputStream.java
-----------------------
Fixed code to implement CR/LF processing per RFC 824 description.
begin 644 patch.txt.gz
M'XL("&D,FCD"`W!A=&-H+G1X=`#</&MSXS:2GY5?`2MUL631DF7+[_'4.AY/
MQBG/HVS/IK9JJZYH$;*YID@=05JC9/W?K[OQY$M^S$PV=ZI)9)%`H]%H]!M8
M6UMC_8&X]5,^&$>^$%P,1!X/8IX-KG@$7Q_S;)9GEUG*_6G_7_Z]WT^BH'69
MQ^Q7^&]SFPTW#S9VX1_;W-C8^&%]??VY`%N_\0"`18P!L-'!UL[!QI8$ME;MX&^VL^'M[#'ZR1A;&\#_X=\LOX[",:,1674<QK]D/`X$^SF?3'C*@\++/WY8
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
M5@CV+#(FVGN*PR;DLQCGA)"3B(&).,[3E-?.!)#N+9<E<22RIA!K[U&M^>'M\LK&#+^.%CU%BUZ!%D_99(],,0)Z%OGXDD=$H.9Y/U=J(IX@4DK@7S;EPO*K
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
MDV@\D&0XK&]36*F:-K"@?9.1JGD/Y+D!1UQ@>=B2UZ=QEB[4_2I.$S-5%=3M!58CQ?QDMC@V&.%Y$)@M%J&A>X6A^1!+B91`9#?A/;[!N'-]**0P1^/Y%I_^
M81-W;L54*.R5"E@-L>EMCTJ,^)TIWFMXOXPO_T.+8U<F25E"5;5JC<2?M4A-
MUQ-M6V&RL^D-[1T'"IRY0T,0DYL0%[M:S/BZ\"=HH^536V-7B*I@(Y6+5::L
M@H>U?.6H"37N.`T<'X7,:'R&$U)]RSZ.&IG`'%^>G)T1/C(A)&&WJ1!`N50U
MO=Z<79R>7'V\^$>QE\E]-/<\>W_\RVEU/"HVL>&=FHZ3,`Y^EH?^.I@G8^/F
M4@F=[AFK`@G\T$31%L>RG4Y7G6ICG8VN+IJ030XKO<UDE_<VS0YKQZ>)+X=`
M34RFQJ8]W,EUVF?QO1^%L@*`"DYT<2-59+1K(QJ*5]3H9'YH!P1YY*&NF-1)
MFPM=_*@"9M<+!(5'W0`29JSB<9*J.UIXC+,.G-`F8R?RK2P^Q41HFH`?,=4%
M4;BCE4U`T*8SS(+"A")EUUA(^A:9XB4RLO!-7_=B45-X!_P^A'TCZ,2$A77Q
M]F2XN[6'E:`849TE8-J)`_M^V)47WX0IGL\%_&X[@ZX,.PL^\U,"B?CCGJ?`
M,@D^<RP#1-\ZYMXL1"K10VI%>4!753BXXGTV'MV?`W/W*/(KE+13Z68P#RVH
M38E<0ER!\6V0G"XW8"#Y$!\<O1J_+HSJ"TI3XW'`7N$4O4LYF)PLF0%UB;%)
M,V.L.TC#ZQS\*]M]J\N.XX4&6YB\I)>\/,B]"^I'F^Q&[`1(#4J#.Y0RS+$J
M@/6PF)U'@1[5C4^C^C@&>3!;Z-$K+#`/`950[1S`4\BB$V)+'EBA[)P;.72@
M7ZE"/KKT"*EZ2'G\:[IJR&5C.1S>'3&1)XUYYM%+&YD/^,3/(UI>*0SIPJ2F
MVY$,9E((9C/ZM@GX0K'0.^!1EI&/G@N;T3!A;^=^J4*\A(S&/`NC/D*0`,A4
M#Z0-(92PKFNGCES6J<V]36]_NUA]['Y4&9:>2_DUU:4U]^NKLC$L;67W/,7#
M\RHEA-D8:H/'&PH5:)+5,,B/YD:_<(>2R4)KC]05N[QK\G)/FL###^Y?Y@<I
M!=7+NJB%RRS4,=*FD6287Y5WH>#IE@;6LZAS*.JG`?1[[R^`EX.$B63*,SHE
M(*:XFT$(<`\V[1UQ%!9&I,F7A7P0HAU9!TV>J99'Z%-Y9QCR.!8MR$NB-K>]
MX9:])*I52TQ9'U%Z_XU6O;GL0%&HU:KB4S@W2;_T_15U2]IR5],%)U?PTME>
M5-/I,;.:K2<O9*OUM8M'$)8M6.VE:!O2`JX[6#`V?E[]75]E0[V#8C-/HT(M
M`OXF2I!J/<+W:#HA#3KJBI8U4"!8DITEF/65Y70P7ZDU\>*/@;E>0IV^&HZ`
M[;:'Y4+TER/<=+/*=YI#[4H,A]YPTZR$KB,B#8R7GY!5HF'@+7VV=IZ404L5
MA5H;@P[*B4Q7VG56#U8M4^*]>WSUGIMDY37GL9P$0$2>$8LX(^--:]<8;TFR
M8ZF[86@(<_-$9\.S"/1Z=CSGTIA2#]/<`XO$[:*H76KN9S4711:*9@'Q,:QG
M3-6U\M2/7/+.\BMTS$TXSK;7]8Y,Q@2IG9RX6S9:NC+&=E<T:OMQ$B^F22[:
M9G;*/KG'2Q>/M`_8+45]CL=C(#IP;)8F6!K1#Y)/H/#!IKGA0:=&IZ),JOCF
MG39!Q:'(KZA=E9=A0+MQ>^1M;FP5;E?[:W*ND])SQG)K9!N96K&F*I73AS]H
M2J$L%R`A?:@N5-7\AF(\"60U`LCL^S!`Z:T-1XN2N8R!+4.BLK-:S]E6O=(-
MNX_M+U-$BYPQ`X-\8HQC2SUTI(R?=,UOPCA&ME;6._D-<I94!&EDYUM*('7=
M*VN&7:?0^X*3'T%`?EP7^602?G$JMQ64"_`E.MU"4I8R3W(H^NJQ]H]T@93;
MPQG('B
M!]7/DO-DSM,3'Q-U-(X.+\#(/;;3[3Y:-/L5,0=T@&!]Y15.4NT5*[U-UI10
MP[#<;^B/=;#.V)ET::HR'(.&7H-WY%334^$L[1=Y^9*L;J+KES!<CL7R@5.:
MBZ=Z*:)!;JZIJE^3#B_Q8.2'\7K&OV2VL0Y_Y.0]KLK%"U;50IO-6*P6R.2,
M;G(E$,'6P-F]!>ZG2!"2Q!*,:E^PAW,U'O[NI[!)DO@]KAQ>)0W;NHW(M3T&
M?XZZW3I>L?$LXT_5M))1IT?(_-?0F]UE&K)7NERPJE?_?RC/6C-P:^2!>>L:
MY-65*MT"4CA,O?R6P+JU,JML["K=/*G64%BY\K_-7=UOVS80?_9_H>AERJ(X
ML>RDR=(,*+:'&1C:8NGC7I1(28395F;)!?J0_[V\.QYYI"A_U5T7%&BK2!1U
M//(^^+L?0\%U$KM)>C;1$*UIXTQ[`52<9UD#Y3ZOHT(1[.PC!O;\.LVRB81#
M'T(P6M>.BAIO=O+O_*4!PM3?\@4DA>#KR/PYWQTS0!^`^ZIYW?@MEA^J"9.K
MY:`IV]_I,M5;')M\[W<8J_]@C(+*/+E6<9HAPD,&232'%G\DUYQ$K6=BHQ_B
M6EG?*'_@=U"*$5-%-)1E('WEO+2VP7L$=X;@.>#-$6Z([X68KV:#I'K,K&J0
M05==9?<&/0QEG^Z_M)BSGCY2"J-J^'F$O.(J\+B:8?Y0N:JZ$#!R=@B''-QF
MV56:329B4\H(;;!.9#A*QB)HDV"V,B0E66\+8%"&NN:6<0:J718<4$9$;.:X
ML5?SKWGS]#S,BR*)'\@ZGH*]B[5].T,['!L"-7L&@S_8_C>@6;/]Z8RE[A")
MZIM';9]A"^K^I=+]-Q>6!!+[K;H]5;)Y`@!+OFQ*]9]DJ8N[A1->J95CE(++
MK98);7)Z9$SUBB#E^*02=^*<5<[HN1E<9XLWHMPSK6[VLCLQ1%VN>EX-!55,
M@<_"KQK(?>4A_#I'#Z=IH0:MY+LJ3CP[PDL@688WH>)?7*;9I>74.8#(=I!9
MC]"VDQJHE"NL'FEM*:Z-\@H?<)"EHVLW@V2SUYP/V\6C=93!.C[&M;V5K,_#
M>;[\YX[Y6(F>$3YFS4O,5WE4;2'_F9OK767@+Y_R;3V7IYM#[UD5=S<Z`WMO
MGP2Y:C@G8IBRT&L,U(I`?L`/;X0Y@6S*_:J:%8!_>6[G,TZ-X\88>!:\QL%.
MH7@0+KMGA\"<4ZM4=G7I)O!?#<,@SH'=PI^("S2W5A#LW-9*0@[2H$\]UAHB
MJR*B/G);17'B>3QWI\^,BO$70MEWW/<?^-Z1#U;$G4^4?SUR5@^]PV$HCCX]
M@ZNH-SG4%Z:0(Z#M#OS_$#FVE-FH&^54M?FR39Q-+3.Y-[@*\'6Q=7$'C0G*
MJK))X&'ZI7`_^R("AT^P0_#7%RS9/3[?"Q<[>=(5[]DAK!RG/$1TOV<4A=`J
MXZ#;%]:>ERZP_"2KFL.IZRP=C[R)?ZCQYDFZY3!O5:G\XJ6V7ORRY-)+<?X(
MS;'1)-W="2?E#N7QAN`2`<E@80*QY6#`L]N$F/3&;HQ)UP\39%8'##)=%1Z$
MM'?@*FX8FY!E8Q4O78H@DWYTI<8?ZKWE$E<<XU*)7VC0PZFS:2\)U@6.Q$U?
M2[IVGGXB8<N4[6<_'3NW<8+Z%N_U\M^GD3-G-[LD&\)DUV?II+QJ#J-`08RI
MBGR7L2.,7?W&(_>SPK;;_=ELPV4WCWS,Q!H[?M0!=O0L$IUU4W*AC4=7Z7CL
M1.D[*1RL3=OE/C@</I*Y8.>,O_`P&@=N9_^MQ[?:TK5ZU3W;L/1*@08![=DH
MG60"JWMQ?IU>7!MFI4'=4`U'$K\]RW_5[H*]^/<B=F@0]'X65:K#X7I1_O!0
M+PNLSD47"E"$E^/SE'%G9X!9I@V\AG,'!K&#J#'-NT$M`NMLHH^NZ[`]'CLM+[/Z@8E''#Y(N``PSH):Q!6"NQ4]U<1^"A"#EA[/E1FF<XV`J(M>S8"9^Y)P
MULK85BVU1XA,KD%'S.("(7RJR:(L5B`(PD3^NRI!++IM;@KN6^2?*ZC)HA:!
MDE.9*@`8V@\AWJVF5!H";(1*^\K/N7(;*KLG2.<,%A6>]KK0Q>H$SJL7LR_J
MJ5F%F+1\]E0K,_@\U]7O1=5HZX3^\+(L&P"O58"6HXU72+53:P^VZB0F/*F'
MUK&L!%2H7Q?E#)!V+[`CB.<.1G,X_N-E5OHM8F<06`<$U^T+OUG<$JT6;36#
M/)+J6Z5BQ)PPIDI/N#4:*22*:5:(M'W74G2`$%;21(TWPBVQ!SA'-*K:IIP]
M:L8BW;67U5*-+.:XGG/D<2&B,362S`B`-\(&E\'9.\(0+`#ZBB6$((RA.2[7
M<6,=+B;BUW,?ZP#ZA8PT?-QR$+EP':>#R9J&4HG:-\Y9"'"5=ETV34J@45LG
MNH)5]/)6O"E`U\O[9[J4XEN8VD_P$)H[91D,,<:4^##RQU)-#/!T7:GC!SB6
M!'H?W(#N#!=R-4(F0V-?X3Q:H,@=#H>(!D<^#D0W`[W_4!;J4Y$;I%<3<51"
MP).70QCB'3HS+Z2WW7"BE70=PV,DSGH"O@-"_[9.5U8+1KBJ!Y+C_DX]`G_(
MK%<:1GE#M$+K!WM/UGK4O=YVZD9,C?^[6M2V\A',YH]3"NR(KQ*]7=I/)007
M=MWT+PA[,4Z?,#FH[$KX6*RP%"V\Q9<"Q`%=TNIN[R7_CUY[O:;ZU7D[E1.F
M&8RGCX86OS:+<N"Y(1V:)R[2P7GB@CE8K:\)3?":N)?9X>Z4KSH>^,E6^-Y,
M:/54'$,)!$*:"PA6+$"/@0/P"*BJ'%@+IQ+D1OI?()\-M^8;2$*S()Y+TK=E
M-Y'48(^*POWP&W_5TT\$788NG=1?X//,RP"G5-"D2Z4%LK]]*IAU2:\M7.[R
M@%WL4;@LF_6;'/\R>=-?K_QFDEZ92ER<RVJU?DM;2CJ*0A#9.45+D7<8/2.)
MMX'@`FA2=1B7JA!D\=A#4,HSY/$QVRT!&'NO3,['&OEEG;,B/1RS07'&G8-V
M0-(D!@[6#B^&&UA/\=!R"\29WD4?/GZ:?GC_[L^C0XH)F&"A2Y)C%H%+/Y\!
M`-C<!)]X"M5FWKT"^_T]Q!T&]E^DHY'=?E:F7*UD">9O8Z7@,:=Q(0!*L?4`
7"[,^JM#_HVGI\!U</OL5_67NGJN$````
`
end
(Review ID: 108487)
======================================================================
Name: krC82822 Date: 12/17/2000
java version "1.2.1"
Classic VM (build JDK-1.2.1-A, native threads)
NOTE: My build includes my original changes to the FTP URL (Bug ID 4269403).
This is a continuation of a previous patch (Bug ID 4269403) by the same author.
The previous patch introduced the sharing of FtpClient objects to improve
performance when transferring multiple files. Some of the changes introduced by
4269403 violated RFC1738 and, as to be expected, proved to be a problem when the
ftp server ran on an MVS platform.
Summary of changes:
FtpClient.java
--------------
1) Removed home directory (See preceeding comments).
2) Declared sendServer/readServerResponse to include them in the javadoc.
3) Implemented URL-PATH interpretation per RFC1738 section 3.2. The
protected method, performAction, has been written to provide a re-usable
implementation.
RFC1738 has resulted in the following changes:
1) The path components, the text between the slashes (/), is now assumed to
be URL encoded. Spaces are expected to have been replaced by plus signs (+) and
restricted characters should be encoded as %oo where oo is an octal number. For
partial backwards-compatibility, decoding failures leave the component
unchanged.
2) The suffix ';type=<typecode>' where <typecode> is one of a, i, or d may be
appended to the path to specify the transfer mode. A typecode of 'a' indicates
ASCII, or text, transfer. Binary, or image, transfers are indicated by the 'i'
typecode and by omitting the entire typecode suffix. The directory typecode,
'd', indicates that the URL input stream should return the results of performing
the NLST command. This is effectively the same as using an FTP URL to get a
directory listing except that the NLST output will consist of a plain text
listing with one file per line.
3) The text following a literal pound (#) character is no longer ignored.
4) The issueCommandCheck method uses the new performAction to correctly
interprete the URL-PATH contained within the command string.
5) Added code to set the file transfer mode (binary/text). During text
transfers, the ftp server transparently handles adding/removing the cntl-M when
working with Windows platforms and my MVS server handles the conversion of ASCII
to EBCDIC.
6) The login procedure has been rewritten to only send the password when it
is requested by the server. RFC1738 states that the URL's password component is
OPTIONAL so FtpClient shouldn't send an invalid default if it wasn't requested.
7) Bug fix. Throws FtpLoginException if the FTP server requests the user's
account. FTP URL's do not support account infomation.
8) Added getCommandSocket to share the socket creation code used in get and
put methods. The getCommandSocket method uses the new performAction method so
this change provides RFC1738 support to the get/put methods.
9) Added nlst method to support the directory typecode specified by RFC1738.
10) Bug fix. The openDataConnection method throws an IOException but NEVER a
FileNotFoundException. Therefore, the catch clause must use IOException.
11) Enhanced the exception handling in the situation whereby the
FtpProtocolException is thrown after parsing the URL into individual directories
and a file name. In the original code, an exception was thrown, FtpClient
attempted to handle the exception but fails with a FtpProtocolException, then
the ORIGINAL exception is thrown to the caller. What the caller never saw was
the reason that FtpClient failed to recover from this exception. In the new
code, the second FtpProtocolException is thrown to the caller with a reference
to the ORIGINAL exception. As a result, the caller will see both why
FtpClient's exception handler failed and why the handler was originally called.
12) Added delete and pasv methods for future use.
13) Added binary(boolean) method to toggle between calls to existing binary()
and ascii() methods.
FtpLoginException.java
----------------------
Added constructor for building a FtpLoginException that references a root, or
original, exception. This change makes use of the modified
FtpProtocolException.
FtpProtocolException.java
-------------------------
Major rewrite to support exception chains. These chains permit reporting both
the original exception and any exception(s) thrown by the exception handlers.
The new printStackTrace methods automatically display the exception chains so
that the typical exception handler need not be changed.
FtpURLConnection.java
---------------------
1) Added support for RFC1738's type component.
2) Added code to correct the parse errors performed by java.net.URL and the
sun.net.www.protocol.ftp.Handler classes.
Note: Someone should be tasked with generalizing java.net.URL to handle
schema-specific parsers.
* The leading slash (/) separating the URL-PATH from the URL-HOST is NOT part
of the file name.
* The pound (#) character and the text following are no longer ignored.
* The optional transfer mode suffix ';type=<typecode>' is no longer
considered to be part of the file name.
2) Since bug id 4269403, all ftp connection objects share a set of ftp client
objects so that multiple files can be transferred using a single command
connection. This model proved to be faulty when connecting to a ftp server on a
MVS platform as it was not possible to restore a FtpClient to its original state
(i.e. the original working directory). The solution introduced here was to
create a FtpSharedClient class which detects when the cd method is called. When
the cd method is called, FtpSharedClient arranges for the connection to have its
own unique FtpClient object. This solution is fully compliant with RFC1630 and
the control optimization discussed in RFC1738 paragraph 3.2.5.
3) The getInputStream() now performs the same protocol consistency check (i.e.
doInput must be true) as getOutputStream.
4) The FtpURLConnection constructor now throws a java.io.IOException since it
has to do some of the parsing that should have been performed by java.net.URL.
5) It is no longer a syntax error to specify a user but not a password (See
RFC1738 section 3.1).
6) The FtpClient is set to binary/text mode per the connection's flag.
7) Added code to interprete the typecode 'd' (;type=d) as request to perform
the NLST command.
Handler.java
------------
It is legal, per RFC1738, for the FTP URL to not specify a password when the
user name is specified.
TelnetOutputStream.java
-----------------------
Fixed code to implement CR/LF processing per RFC 824 description.
begin 644 patch.txt.gz
M'XL("&D,FCD"`W!A=&-H+G1X=`#</&MSXS:2GY5?`2MUL631DF7+[_'4.AY/
MQBG/HVS/IK9JJZYH$;*YID@=05JC9/W?K[OQY$M^S$PV=ZI)9)%`H]%H]!M8
M6UMC_8&X]5,^&$>^$%P,1!X/8IX-KG@$7Q_S;)9GEUG*_6G_7_Z]WT^BH'69
MQ^Q7^&]SFPTW#S9VX1_;W-C8^&%]??VY`%N_\0"`18P!L-'!UL[!QI8$ME;MX&^VL^'M[#'ZR1A;&\#_X=\LOX[",:,1674<QK]D/`X$^SF?3'C*@\++/WY8
M9_BY3I*(^W$+_Q99.+Y;G%R<OV5';.)'@A_6M>(\/KEP6_Q`;30^JBUT"F,_
M7;Q/`FX;LU+C*MJ=`IJ3P#,`);PNH@X$1YIL,_AKO99DN[O>_DB3K!5.6,>B
MT\5'-)5\QM/^/`TSWAEW$;L6!S1AA!79`/O)^7;E0X(T9BM';/6?\6J7'I4A
M;70/6RT-X8$11-GM"+NEJRXL2W,'F*9PEN9`,WRLT&(UPQ'$0],91F$;\N>#
M06+)A!_4@N`W$79WY.T/)6&_@G*#`?MYP;);SL;)=,KC3##_.KGG'CM;G3+@
MV'P:QC?0P,]8%,9<L$X2P\]0,+$0&9]V&6PGYH#+>`I=_`PVSO6"`8_Z41+S
M/F-7"..:2W`PGB]@E#`6/,V8SX"0UWR2E&!!N_.W?7>9U>K@HB*5:RG<-/L>
M@W^/3-N/%Q(7Q!.[PN9D,%L?I@]3\R-\B^1P0$US@3-CDR2*DKF<N,\^?#[O
MZT9%OL*GK1(K5M9X;8GXFV2SP=ML=A*%@'J]Y-LZ&&T98;5,\E5AE83>YNA@
M>V^)T-OW=G>-T&-:\)'P2).,CXD3E&P(>.0O>'`2)8)?\O2>IP69(Z78`*">
MQ6$6`K'G27J'*]&Y3::\RX(P!8!)NL!!UDN#@"S"IM@2H,9Y%#E2;[`&#*B7
M2/)@RCD+_,QG4SZ]YJD@3H[X)`.NA(:IDF1V/@#CVA_?S?TT$.O`.#,_"Z]#
MX(L%L/?G&+ID.7)^M/#8NR3[%6@)0@)X"QAMJG"/BO#FM\A>&9O[R(-9PL:W
M?GS#B36A:P:8"MH[G,5\#O03X4W,;GW!<L'B)",ZH)B%51@UB]GAWKXWW#?+
MU$IYEJ<Q2_DL6ARZ7+=2HNE]$@;`_B+G)[!1_#@XN>7CNXXB]7@:=)&0R5RP
MLX^G7\9\EH4@'TB\(,^[/3O4&D3RVZM/_WWY^>3D]/*RJP;4'X)%,P66_`18
M).,D,G`1`NNQ]@%KP]<-SRZXF"4@010ZG6ZW,)DR%X9Q!E/V@PN<=J<!<Z3F
M<&_'V]S8,]+U,7)))4FT$J#+)6=W:%]&L)Q]A9]0&D5N?=L2U`O)+0EVI016
M8RW;ZBEWEA">.H@9M()](`>K`@!JD?HQ<Z,.=6@\P@S,<(-\Z.F-"-OCMAE+
MP`HVS/1X3(\ZN.;Z[Z[53RYI58_R>,U#U+"@[E)E0ZF6'V-`V?]1)C0*'?YX
M\/1/0R"BS->S:MU.W]K:\K:VE!6*O+PU&GE;VQN&EVD<D%27R?B.9_TQBF)@
M!:,T)06X?/"`&A/_0#DI>P!+.=W],:*C^S?`E=JLBNKNMK>UM^&@NK?K;>V/
M#*J2=9,9C]6.NDU$YM'P4F'B^KI4.I*K>GIQ\?&B6YQ0XY*V?^/1&%7&E`OA
MW_"V,12D^'?-JM*2U<]J#Q9@?[^H$=FK\/4,]"ZHL^#5('Q=594.GT?)31AK
M)L_!/G)VE`31)+I8B]0<F"OP[SJYR5%WG&5,W"9Y%,2K&8DGL$TT();'$4P;
M-)#2IO!IQ9P'J(OZ4LEJ0J\(6H0S\1$6!+B\EK[GB+M#7%11XR2.)5>#?L,E
M;,O50RNRC_,#EL(O^]"@=V0P->M=V,_MSY>G%[01$4"5`1HT2QG+`I2G;&Y$
MQ""Y(HT-]M-/K(C<I^/+2P)DU^V%"%8@/4$-ML`RO>-\1K;$O,CD8.HD.7""
M2.`-F.*Q:@\>'5HC84R=0"?D$9H@[-W5^W,8^X;WL:$:!\TKW+7[N]YHTPB8
M/Y/A_P]S9NO[,"48]QE)PQ/RYX]`'PQ!G:*7HFR-E/]/#I:H,/A+[53@Z"/)
MT5VMN);@R21S'D@G2,SX.)PL#.RVUH55^CRZ.5:>0*/G[PM4R-*V::;7DY;G
M^4/WE//=,.YF5WN+2\<]/CFY.B#3']0CJD+I;X(;QSY?G"OM]>?L_CKU-QIN
M>J,=ZVFT3%#C0;JXZ\RH&N6IS>8!&:/Z,=('7_7!%TJ/,_".R7/>I(#,NB,R
M57]J*_)KH6B][<E'81SP+Q]+P$9=CVUWG=$>JO8\.J"_G%Z!GIR$$?B,:3(E
MB@!S,BEJ4(ZM5`-D9[$-B0$3:)&&4&(?_=<F2U4:32UQJ%@S`[<37PP&988`
M4!^2["VNG\,4O^+FNPN#`(9;:5L#5`!YT'YZ`^;;B11VU/[B]$K*%H.:W!G`
M#-GXEG5JAZ'&YI=CI(/1`494Y+'VH,VFX<UM1OQY+=U8HB$X_N$T!,^='&L4
MI;HSTM!/LW"<1WY*;"Q)["%[1CQ;!5,DQ7@*/`Y!;"43IV=['+2U64WN,U`=
MOXA_"9%9Y(]Y7ZX7]9)K<I7<\3C\'582#5JD;.EY1U.&9F4I*IM)*QJL^-.(
M8_C(Q!M63/AJ?HOS[F1]<-;?)RE7+06(`N6=%/MG_9A_R6C\#FDAX\&L+(%A
M0AO2YC/TQNA$$F-$A['S)+G#?9W/8%GFFA;4]1I8]<Z)0AK&4T'*H.,@J:*7
MEDEJS&G&2YC]$MZ35I\5QI4,7>`GC861%NLV=.922EE;4A:T6H]R>'$"ZX5P
MKP11BTQ1:,G54*XR<DMEOW=$_Z;X``1-L^N@Q<RGST;,*+8M"IE'HO`HLI\K
M91J%PN75QQJA4#OQ0B:`9EYX\J2IGY]=7M%0L*=C($+*I^#]EN:/!N8(7-K1
MSI9Q"RLJ94G\2DT9$%2&AWKPLIB%S.&@E2G!J(!%.)VIC:E#&.7XA::\WM=?
M']JH7T1F(AQE#I8N;05U7WY)$5A^VS&N<"E8(WMYE8!&S["*;-$7AW\%[;IT
MWU99@V1'V[.`__H[>_D&K9DB[O7R%+_3%JZU$G>'WFAOJQR/_I:2]>0-TMU7
M+@G0V.8.FG&M^J:@`M4JR`YO-)3E@>]28^U1L7__6V__4HL^+,1-=BN#6!O=
MAE;*VM5RN1J8;Y_\]H9D>!G;)BY-,=*HLRP.B29+Y/$../S[F^7H^-<O7L\R
M5@CV+#(FVGN*PR;DLQCGA)"3B(&).,[3E-?.!)#N+9<E<22RIA!K[U&M^>'M\LK&#+^.%CU%BUZ!%D_99(],,0)Z%OGXDD=$H.9Y/U=J(IX@4DK@7S;EPO*K
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
MDV@\D&0XK&]36*F:-K"@?9.1JGD/Y+D!1UQ@>=B2UZ=QEB[4_2I.$S-5%=3M!58CQ?QDMC@V&.%Y$)@M%J&A>X6A^1!+B91`9#?A/;[!N'-]**0P1^/Y%I_^
M81-W;L54*.R5"E@-L>EMCTJ,^)TIWFMXOXPO_T.+8U<F25E"5;5JC<2?M4A-
MUQ-M6V&RL^D-[1T'"IRY0T,0DYL0%[M:S/BZ\"=HH^536V-7B*I@(Y6+5::L
M@H>U?.6H"37N.`T<'X7,:'R&$U)]RSZ.&IG`'%^>G)T1/C(A)&&WJ1!`N50U
MO=Z<79R>7'V\^$>QE\E]-/<\>W_\RVEU/"HVL>&=FHZ3,`Y^EH?^.I@G8^/F
M4@F=[AFK`@G\T$31%L>RG4Y7G6ICG8VN+IJ030XKO<UDE_<VS0YKQZ>)+X=`
M34RFQJ8]W,EUVF?QO1^%L@*`"DYT<2-59+1K(QJ*5]3H9'YH!P1YY*&NF-1)
MFPM=_*@"9M<+!(5'W0`29JSB<9*J.UIXC+,.G-`F8R?RK2P^Q41HFH`?,=4%
M4;BCE4U`T*8SS(+"A")EUUA(^A:9XB4RLO!-7_=B45-X!_P^A'TCZ,2$A77Q
M]F2XN[6'E:`849TE8-J)`_M^V)47WX0IGL\%_&X[@ZX,.PL^\U,"B?CCGJ?`
M,@D^<RP#1-\ZYMXL1"K10VI%>4!753BXXGTV'MV?`W/W*/(KE+13Z68P#RVH
M38E<0ER!\6V0G"XW8"#Y$!\<O1J_+HSJ"TI3XW'`7N$4O4LYF)PLF0%UB;%)
M,V.L.TC#ZQS\*]M]J\N.XX4&6YB\I)>\/,B]"^I'F^Q&[`1(#4J#.Y0RS+$J
M@/6PF)U'@1[5C4^C^C@&>3!;Z-$K+#`/`950[1S`4\BB$V)+'EBA[)P;.72@
M7ZE"/KKT"*EZ2'G\:[IJR&5C.1S>'3&1)XUYYM%+&YD/^,3/(UI>*0SIPJ2F
MVY$,9E((9C/ZM@GX0K'0.^!1EI&/G@N;T3!A;^=^J4*\A(S&/`NC/D*0`,A4
M#Z0-(92PKFNGCES6J<V]36]_NUA]['Y4&9:>2_DUU:4U]^NKLC$L;67W/,7#
M\RHEA-D8:H/'&PH5:)+5,,B/YD:_<(>2R4)KC]05N[QK\G)/FL###^Y?Y@<I
M!=7+NJB%RRS4,=*FD6287Y5WH>#IE@;6LZAS*.JG`?1[[R^`EX.$B63*,SHE
M(*:XFT$(<`\V[1UQ%!9&I,F7A7P0HAU9!TV>J99'Z%-Y9QCR.!8MR$NB-K>]
MX9:])*I52TQ9'U%Z_XU6O;GL0%&HU:KB4S@W2;_T_15U2]IR5],%)U?PTME>
M5-/I,;.:K2<O9*OUM8M'$)8M6.VE:!O2`JX[6#`V?E[]75]E0[V#8C-/HT(M
M`OXF2I!J/<+W:#HA#3KJBI8U4"!8DITEF/65Y70P7ZDU\>*/@;E>0IV^&HZ`
M[;:'Y4+TER/<=+/*=YI#[4H,A]YPTZR$KB,B#8R7GY!5HF'@+7VV=IZ404L5
MA5H;@P[*B4Q7VG56#U8M4^*]>WSUGIMDY37GL9P$0$2>$8LX(^--:]<8;TFR
M8ZF[86@(<_-$9\.S"/1Z=CSGTIA2#]/<`XO$[:*H76KN9S4711:*9@'Q,:QG
M3-6U\M2/7/+.\BMTS$TXSK;7]8Y,Q@2IG9RX6S9:NC+&=E<T:OMQ$B^F22[:
M9G;*/KG'2Q>/M`_8+45]CL=C(#IP;)8F6!K1#Y)/H/#!IKGA0:=&IZ),JOCF
MG39!Q:'(KZA=E9=A0+MQ>^1M;FP5;E?[:W*ND])SQG)K9!N96K&F*I73AS]H
M2J$L%R`A?:@N5-7\AF(\"60U`LCL^S!`Z:T-1XN2N8R!+4.BLK-:S]E6O=(-
MNX_M+U-$BYPQ`X-\8HQC2SUTI(R?=,UOPCA&ME;6._D-<I94!&EDYUM*('7=
M*VN&7:?0^X*3'T%`?EP7^602?G$JMQ64"_`E.MU"4I8R3W(H^NJQ]H]T@93;
MPQG('B
- duplicates
-
JDK-4459621 URL with user and no password throws unexpected exception
-
- Closed
-
-
JDK-4288245 FTP URLs in URLClassLoader appear to be broken
-
- Closed
-