This status report is for the week of August 6 – August 10. This week has continued to see a lot of fine tuning bug fixes.
THIS WEEK’S ACCOMPLISHMENTS
The Changelog grew by 116 lines this week. Key features are as outlined.
- “Blocking” property was removed from Mono.FastCgi.Socket. It was only used to disable blocking on a socket that already communicated with asynchronous calls and was causing a problem with Abyss and unmanaged sockets.
- All headers are now sent in a single batch rather than one at a time. This should reduce the amount of network traffic and prevents Nginx from occasionally losing a request.
- Added documentation for Abyss X1 and Nginx.
- Fixed .in files not to hardcode mono location.
- Provide a friendly response 500 error page if no application could be found for a request.
- Added directory root detection with code borrowed from XspWorkerRequest.
- Found bug in Mono.WebServer where MonoWorkerRequest.SendFile was double closing a handle.
- Removed check for file existence when creating applications. This way proper applications can still be created when the user mistypes the path.
- Added documentation index page with important information on using paths vs. extensions, what are ASP.NET applications, how applications are handled, and running fastcgi-mono-server on a different machine than the web server. Plus brief information on how a request is actually processed, from Firefox to ASP.Default_aspx:Render(). See http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html
- Added svn:eol-style=native to .html and .cs files.
- Added svn:mime-type to HTML and PNG files so they will show up in a web browser.
- Fixed the status line. It was being sent in the HTTP: “HTTP/1.1 200 OK” format instead of the CGI “Status: 200 OK” format. This was causing some breakage where status 200 was always being sent from web servers and Apache wasn’t working at all.
- Better output for “/help”
- Added some docs for using paths instead of directory mapping.
- Cleaned up UnmanagedSocket with proper SocketExceptions and a wait handle for EndAccept.
After discussion with Daniel Nauck changed the recommended method of handling ASP.NET to sending all requests to fastcgi-mono-server. The benefits are outlined at http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html#info1 but in short they are improved security and enhanced features with application specific configuration.
PLANS FOR THE COMING WEEK
- Continue documenting.
- Alpha release.
- Clean up API.
- Adding open source tools: mailing list, bugzilla, wiki page???
CHALLENGES I’M FACING
Mostly just a million different web server nuances.
RESOURCES USED THIS WEEK
- MSDN: WaitHandle, System.Web.UI.Page, IAsyncResult
- Netcraft: Server statistics.
- Apache API reference: Trying to understand cmd_parms.
- FastCGI.com: Performance statistics.
- CGI specification: Review.
- http://svnbook.red-bean.com: Information on properties.