[Mono-dev] Bug found in Mono.WebServer.XSPWorker ?
Sebastien Pouliot
sebastien.pouliot at gmail.com
Sat Sep 2 13:42:41 EDT 2006
Hello Jean-François,
On Sat, 2006-09-02 at 18:14 +0200, Jean-François Burdet wrote:
> Hi there,
>
> I hope it's the correct place to post such request.
yes
> I was searching a way of embedding an secure web server in my .Net
> application i'm writting using Visual Studio 2005.
>
> At first, I simply took the Mono.WebServer2.dll and Mono.Security.Dll
> from the Mono Window build (1.1.17.1) and some sources files (server.cs
> and security.cs) to build the Mono.XSP assembly which simply parse the
> command line then launching Mono.WebServer.ApplicationServer.
>
> Using that setup I had success running the server, including static html
> files, ASP pages, web services under http and https/SSL. Good :-)
strange (see later)
> Then I wanted to dig a bit into Mono.Webserver, so I grab the source
> files from the 1.1.17.1 tarball and made another project to build my own
> Mono.Webserver.dll then using it instead of the Mono.WebServer2.dll of
> the official windows build to make the Mono.XSP server running and ...
> it works as good as before BUT :
>
> I realized that when using SSL, something was now broken, it seems that
> now the SSL negociation is somehow buggy and I can't figure out why but
> when running regular http everything is ok (asp, webservices, ...).
>
> When opening the webpage from my browser, it simply waits, receiving
> nothing ...
yes, this has been filed as bug 79222 last week
> So I dig a bit into the source code and I realize that the worker was
> reading it's data from the socket but not the stream ...
uho, that's bad as the socket data is encrypted under SSL
> so I simply
> change some line in the XSPApplicationHost.cs source file :
>
> 1. "sock.BeginReceive (buffer, 0, buffer.Length, SocketFlags.None, new
> AsyncCallback (ReadCB), buffer);" becomes "stream.BeginRead(buffer, 0,
> buffer.Length, new AsyncCallback(ReadCB), buffer);"
>
> 2. "int nread = sock.EndReceive (ares);" becomes "int nread =
> stream.EndRead(ares);"
>
> and ... it now works fine.
>
> Please can you confirm I found a bug, if the solution is ok, you can
> comit this to the source tree.
The fix looks logical. We'll look into this and confirm asap.
Merci!
> Regards,
>
> JF
>
> PS: I'm starting to wonder why it was working with the DLL from the
> Official windows build ... The Reflector disassembler showed me that
> this dll code is not the same as the latest sources, for example, look
> at the XSPWorker.Run method is absolutly not the same than the source code !
That's strange too. Thanks for noticing that!
--
Sebastien Pouliot <sebastien at ximian.com>
Blog: http://pages.infinit.net/ctech/
More information about the Mono-devel-list
mailing list