[Mono-devel-list] [PATCH] System.Net.FtpWebRequest

Martin Hinks mhinks at gmail.com
Mon Jun 27 04:37:46 EDT 2005


Ok, here's a version with those comments taken into account:

Also, need to add these lines to the mono supplied machine.config
under <webRequestModules> to do RegisterPrefix:

<add prefix="ftp" type="System.Net.FtpWebRequestCreator, System,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
<add prefix="ftps" type="System.Net.FtpWebRequestCreator, System,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>

:No XML Comments
:Has error handling on SendCommand - throws an error saying connection lost
:No change to behaviour of changing property
:Abort code changed
:Mode change settings added

Please review patch :)

Martin

On 6/26/05, Miguel de Icaza <miguel at ximian.com> wrote:
> Hello,
> 
>   Excellent work Martin.
> 
>   I have attached a few comments:
> 
> > 4.) I did XML doc for it all - don't know how much that helps....
> 
> In Mono we tend not to use the inline-XML documentation, and instead we
> put the documentation on a separate file.   Could you resend the code
> without XML comments?
> 
> The comments we can reuse in Monodoc (install your new libraries, and
> run the monodocer command).
> 
> > 5.) I haven't modified it so that you don't need to do .RegisterPrefix
> > (and am not sure how either)
> 
> Am confused about that.
> 
> > The main classes (FtpAsyncResult, FtpWebRequest, FtpWebResponse, FtpEnums)
> > FtpTest.cs - a usage example - takes ftp:// or ftps:// as cmd line arg
> > and connects, lists the dir etc...
> > FtpWebRequestTest.cs - a VERY basic test class - it will test you
> > didn't completely break it but not much else yet - I'll do more later.
> 
> I have not looked very closely to the code, but a few things are worth
> mentioning:
> 
>        * The abort code does not prepare the socket to send an
>          Out-of-Band message before it sends the abort.
> 
>        * The abort code I think is "ABOR", not "ABORT"
> 
>        * Although there are properties for setting binary transfer,
>          there does not seem to be any code to actually change the
>          transfer mode, since the default in most servers is ASCII
>          this probably will cause trouble.
> 
>        * When changing properties of a connection, maybe the code
>          should queue changes (unless the MS.NET implementation does
>          it differently), for example, it should be possible to
>          change the binary mode while a transfer is in progress.
> 
>          On the next operation, it could send all of the pending
>          changes down the line.
> 
>        * The code does not seem to handle broken communications,
>          for instance, consider the "SendCommand" routine, it
>          should probably loop around:
> 
>           net.Write(sendBuffer, 0, sendBuffer.GetLength(0));
> 
>          And catch errors;  And if an error happens while sending
>          the command or receiving the reply, it should throw the
>          proper exception (or try to recover, not sure what MS
>          does here).
> 
> I have attached the source code to the ftp client that is used in the
> Midnight Commander which might be useful as a reference for
> miss-behaving ftp sites.  The code has extra stuff that you can safely
> ignore, but the underlying ftp client should be a good reference.
> 
> Miguel.
> 
> 
> 


-- 
Martin Hinks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FtpWebRequest.zip
Type: application/zip
Size: 16481 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20050627/0a680d40/attachment.zip 


More information about the Mono-devel-list mailing list