<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Brian Nickel Blogs &#187; Summer of Code 2007</title>
	<atom:link href="http://kerrick.wordpress.com/category/summer-of-code-2007/feed/" rel="self" type="application/rss+xml" />
	<link>http://kerrick.wordpress.com</link>
	<description>... or at least he did in 2007, it&#039;s hard to predict the future.</description>
	<lastBuildDate>Sun, 21 Apr 2013 05:01:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='kerrick.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Brian Nickel Blogs &#187; Summer of Code 2007</title>
		<link>http://kerrick.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://kerrick.wordpress.com/osd.xml" title="Brian Nickel Blogs" />
	<atom:link rel='hub' href='http://kerrick.wordpress.com/?pushpress=hub'/>
		<item>
		<title>FastCGI ASP.NET Server Status Report 12</title>
		<link>http://kerrick.wordpress.com/2007/08/23/fastcgi-aspnet-server-status-report-12/</link>
		<comments>http://kerrick.wordpress.com/2007/08/23/fastcgi-aspnet-server-status-report-12/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 03:52:16 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/23/fastcgi-aspnet-server-status-report-12/</guid>
		<description><![CDATA[This is the final status report for the FastCGI ASP.NET Server. Due to a combination of a cold and schlepping around campus in 105F weather (40.6C where applicable), I&#8217;ve been a bit delirious. But not that my head is clearing, here&#8217;s the info you&#8217;ve been waiting for. THIS WEEK&#8217;S ACCOMPLISHMENTS The last week was a [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=50&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is the final status report for the FastCGI ASP.NET Server. Due to a combination of a cold and schlepping around campus in 105F weather (40.6C where applicable), I&#8217;ve been a bit delirious. But not that my head is clearing, here&#8217;s the info you&#8217;ve been waiting for.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>The last week was a bit sparse on accomplishments. I had a lot of preparation to do to prep for the first week of school, and most problems have been resolved, but the following changes were made:</p>
<ul>
<li>Application checking was reworked to verify that Web.Config also exists. As it stands, the application manager checks for both Web.Config and Bin when adding an application. Web.Config doesn&#8217;t necessarily mean something is an application, but the lack of it means that it isn&#8217;t. (I&#8217;ve been told this is a IIS rule.)</li>
<li>Requests that are directories but don&#8217;t end in a slash are redirected to the one with a slash.</li>
<li>Case insensitive checking is used for &#8220;Web.Config&#8221;, &#8220;Bin&#8221;, and index pages to improve compatibility.</li>
<li>Log levels can be set in the command line.</li>
<li>Log messages can be sent to the standard output.</li>
<li>ConfigurationManager.xml has been reorganized to group commands more logically.</li>
</ul>
<h2>WHERE IT STANDS NOW</h2>
<p>At this point, the FastCGI Mono Server works completely with Lighttpd and Abyss, and when used with Apache and mod_fcgid, behaves like the default config supplied with mod_mono.</p>
<p>Cherokee has some problems when multiple requests are sent at the same time, but this may be a problem on either end. (In most cases, the mistake has been on my end.)</p>
<h2>PLANS FOR THE FUTURE&#8230;</h2>
<p>src/Mono.WebServer: Much of my work on Mono.WebServer is to be refactored and worked into Mono.WebServer (XSP package). This may mean automatic mapping support in mod_mono as well in the future.</p>
<p>src/Mono.WebServer.FastCgi: Most of the Mono.WebServer.FastCgi stuff will be restructured to and made more generic (think Mono.WebServer.CgiRequestWorker and Mono.WebServer.CgiApplicationHost) which will be reusable for things like SCGI support. This means fastcgi-mono-server may appear in XSP as well.</p>
<p>src/Mono.FastCgi: Support still needs to be finished for the Authorizer and Filter roles, and some renaming/FxCop/Gendarme needs to be applied. In the near future, I recommend bundling it with your application if you&#8217;re using it, but in the distant future, I expect it to be API stable/GAC-able.</p>
<p>Unfortunately, I will be taking 19 credit hours this semester, to accelerate my transition from Chemical to Computer Systems Engineering. This means I&#8217;ll have much less time to contribute, but I will continue to work on this (and my other) project.</p>
<h2>SPECIAL THANKS</h2>
<p>Special thanks to <a href="http://code.google.com/soc/2007/">Google</a>, the <a href="http://code.google.com/soc/2007/mono/about.html">Mono SoC administrators</a>, <a href="http://grendello.blogspot.com/">Marek</a>, <a href="http://www.ohloh.net/accounts/4130">Daniel</a>, Dick, <a href="http://tirania.org/blog/index.html">Miguel</a>, and everyone who commented or contributed in some way to my project! I appreciate all the support and the opportunity not to totally waste my summer.</p>
<p>Sincerely,<br />
Brian Nickel</p>
<p>PS. Trac seems to have my IP address confused with a spammer, so I can&#8217;t report bugs on sites that don&#8217;t provide public registration. Does anyone know how I can fix this?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=50&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/23/fastcgi-aspnet-server-status-report-12/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 11</title>
		<link>http://kerrick.wordpress.com/2007/08/13/fastcgi-aspnet-server-status-report-11/</link>
		<comments>http://kerrick.wordpress.com/2007/08/13/fastcgi-aspnet-server-status-report-11/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 18:54:25 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/13/fastcgi-aspnet-server-status-report-11/</guid>
		<description><![CDATA[This status report is for the week of August 6 &#8211; August 10. This week has continued to see a lot of fine tuning bug fixes. THIS WEEK&#8217;S ACCOMPLISHMENTS The Changelog grew by 116 lines this week. Key features are as outlined. &#8220;Blocking&#8221; property was removed from Mono.FastCgi.Socket. It was only used to disable blocking [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=49&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This status report is for the week of August 6 &#8211; August 10. This week has continued to see a lot of fine tuning bug fixes.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>The Changelog grew by 116 lines this week. Key features are as outlined.</p>
<ul>
<li>&#8220;Blocking&#8221; 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.</li>
<li>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.</li>
<li>Added documentation for Abyss X1 and Nginx.</li>
<li>Fixed .in files not to hardcode mono location.</li>
<li>Provide a friendly response 500 error page if no application could be found for a request.</li>
<li>Added directory root detection with code borrowed from XspWorkerRequest.</li>
<li>Found bug in Mono.WebServer where MonoWorkerRequest.SendFile was double closing a handle.</li>
<li>Removed check for file existence when creating applications. This way proper applications can still be created when the user mistypes the path.</li>
<li>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 <a href="http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html">http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html</a></li>
<li>Added svn:eol-style=native to .html and .cs files.</li>
<li>Added svn:mime-type to HTML and PNG files so they will show up in a web browser.</li>
<li>Fixed the status line. It was being sent in the HTTP: &#8220;HTTP/1.1 200 OK&#8221; format instead of the CGI &#8220;Status: 200 OK&#8221; format. This was causing some breakage where status 200 was always being sent from web servers and Apache wasn&#8217;t working at all.</li>
<li>Better output for &#8220;/help&#8221;</li>
<li>Added some docs for using paths instead of directory mapping.</li>
<li>Cleaned up UnmanagedSocket with proper SocketExceptions and a wait handle for EndAccept.</li>
</ul>
<p align="center"><em>and</em></p>
<p>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 <a href="http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html#info1">http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/doc/index.html#info1</a> but in short they are improved security and enhanced features with application specific configuration.</p>
<h2>PLANS FOR THE COMING WEEK</h2>
<ol>
<li>Continue documenting.</li>
<li>Alpha release.</li>
<li>Clean up API.</li>
<li>Adding open source tools: mailing list, bugzilla, wiki page???</li>
</ol>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>Mostly just a million different web server nuances.</p>
<h2>RESOURCES USED THIS WEEK</h2>
<ul>
<li>MSDN: WaitHandle, System.Web.UI.Page, IAsyncResult</li>
<li>Netcraft: Server statistics.</li>
<li>Apache API reference: Trying to understand cmd_parms.</li>
<li>FastCGI.com: Performance statistics.</li>
<li>CGI specification: Review.</li>
<li><a href="http://svnbook.red-bean.com">http://svnbook.red-bean.com</a>: Information on properties.</li>
</ul>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=49&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/13/fastcgi-aspnet-server-status-report-11/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>Apache &amp; fastcgi-mono-server, for the most part</title>
		<link>http://kerrick.wordpress.com/2007/08/09/apache-fastcgi-mono-server-for-the-most-part/</link>
		<comments>http://kerrick.wordpress.com/2007/08/09/apache-fastcgi-mono-server-for-the-most-part/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 05:08:23 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/09/apache-fastcgi-mono-server-for-the-most-part/</guid>
		<description><![CDATA[When trying to figure out why all my requests were turning into &#8220;200 OK&#8221; from the Lighttpd and Cherokee, I discovered I&#8217;ve been sending them incorrectly, as HTTP style lines rather than CGI header style lines. Oops. With this change implemented, mod_fcgid is no longer failing on me and I&#8217;ve got what is the start [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=48&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When trying to figure out why all my requests were turning into &#8220;200 OK&#8221; from the Lighttpd and Cherokee, I discovered I&#8217;ve been sending them incorrectly, as HTTP style lines rather than CGI header style lines. Oops. With this change implemented, mod_fcgid is no longer failing on me and I&#8217;ve got what is the start of a configuration for Apache. <strong>PLEASE NOTE THIS IS NOT THE FINAL OR RECOMMENDED CONFIGURATION</strong>, <em>but it is worth checking out</em>.</p>
<pre>&lt;IfModule fcgid_module&gt;
 &lt;FilesMatch ".(aspx|asmx|ashx|asax|ascx|soap|rem|axd|cs|config|Config|dll)$&gt;
    SetHandler fcgid-script
    FCGIWrapper /usr/bin/fastcgi-mono-server .aspx
    FCGIWrapper /usr/bin/fastcgi-mono-server .asmx
    FCGIWrapper /usr/bin/fastcgi-mono-server .ashx
    FCGIWrapper /usr/bin/fastcgi-mono-server .asax
    FCGIWrapper /usr/bin/fastcgi-mono-server .ascx
    FCGIWrapper /usr/bin/fastcgi-mono-server .soap
    FCGIWrapper /usr/bin/fastcgi-mono-server .rem
    FCGIWrapper /usr/bin/fastcgi-mono-server .axd
    FCGIWrapper /usr/bin/fastcgi-mono-server .cs
    FCGIWrapper /usr/bin/fastcgi-mono-server .config
    FCGIWrapper /usr/bin/fastcgi-mono-server .Config
    FCGIWrapper /usr/bin/fastcgi-mono-server .dll
    Options +ExecCGI
 &lt;/FilesMatch&gt;

 DirectoryIndex index.aspx
 DirectoryIndex Default.aspx
 DirectoryIndex default.aspx
&lt;/IfModule&gt;</pre>
<p>There are two important shortcomings:</p>
<ol>
<li>Just wrapping extensions is not a recommended way of working with ASP.NET, as it lacks certain security and management features. It is better to just send the whole directory to the Mono server. (More on this, Friday.) As far as I understand it, this will require a change in mod_fcgid.</li>
<li>WebResource.axd shows up as a 404 error rather than the expected resource, this can be overcome hackishly by creating an empty WebResource.axd where the other one is expected. <strong>Does anyone who knows Apache know how to overcome this?</strong></li>
</ol>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=48&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/09/apache-fastcgi-mono-server-for-the-most-part/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>Abyss and Nginx now documented and working</title>
		<link>http://kerrick.wordpress.com/2007/08/07/abyss-and-nginx-now-documented-and-working/</link>
		<comments>http://kerrick.wordpress.com/2007/08/07/abyss-and-nginx-now-documented-and-working/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 20:24:30 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/07/abyss-and-nginx-now-documented-and-working/</guid>
		<description><![CDATA[Abyss and Nginx have been both been successfully tested (but not without some minor bug fixes in fastcgi-mono-server). I&#8217;m not sure how big of news this is, as I never heard of these servers until I found them in a table on Wikipedia, but apparently Nginx is big in Russia.Docs are at the usual place, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=47&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Abyss and Nginx have been both been successfully tested (but not without some minor bug fixes in fastcgi-mono-server). I&#8217;m not sure how big of news this is, as I never heard of these servers until I found them in <a href="http://en.wikipedia.org/wiki/Comparison_of_web_servers#Features">a table on Wikipedia</a>, but apparently Nginx is big in Russia.Docs are at the <a href="http://www.public.asu.edu/~bnickel/fastcgi-mono-server/linux/">usual place</a>, and I&#8217;ve added an extra notice about the potential security risks of using ASP.NET by extensions alone. (Thanks to Daniel Nauck for pointing it out.)</p>
<p>Important changes that make this possible:</p>
<ul>
<li>Status 200 is sent again. Abyss was sending its own status (I presume 404) if the file didn&#8217;t exist and fastcgi-mono-server wasn&#8217;t sending in information.</li>
<li>Blocking is no longer set for sockets. It didn&#8217;t appear to provide any essential features, as the server uses asynchronous calls anyway, but it was causing the unmanaged socket to stop listening on Abyss.</li>
<li>Response headers are now stored in a string builder and sent only once the server has finished outputting them. The fast onslaught of tiny requests was causing occasional failure in Nginx.</li>
</ul>
<p>If you use either of these server, please test them out and let me know of any issues you might encounter.</p>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=47&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/07/abyss-and-nginx-now-documented-and-working/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 10</title>
		<link>http://kerrick.wordpress.com/2007/08/04/fastcgi-aspnet-server-status-report-10/</link>
		<comments>http://kerrick.wordpress.com/2007/08/04/fastcgi-aspnet-server-status-report-10/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 22:32:24 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/04/fastcgi-aspnet-server-status-report-10/</guid>
		<description><![CDATA[This status report is for the week of July 30 &#8211; August 3. This week has seen a lot of work fine tuning and cleaning up the server so it will be more usable and useful. THIS WEEK&#8217;S ACCOMPLISHMENTS This week saw an explosion of development activity. Daily commits yielded a Changelog 234 lines (or [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=46&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This status report is for the week of July 30 &#8211; August 3. This week has seen a lot of work fine tuning and cleaning up the server so it will be more usable and useful.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>This week saw an explosion of development activity. Daily commits yielded a Changelog 234 lines (or 64%) larger than the week before. Key features are as outlined.</p>
<ul>
<li>Support was added for serving on a new Unix socket, as opposed to a piped socket or TCP socket. This can be used in several web servers in place of TCP sockets.</li>
<li>Started work on documenting how to configure servers. Lighttpd and Cherokee are completely documented, Abyss is documented except for a bug appearing in ASP.NET 2.0, and the current problems with Apache2 are documented.</li>
<li>Support was added for setting all command line options via environment variables, due to limitations in some servers. (MONO_FCGI_SOCKET=tcp is the same as setting /socket=tcp)</li>
<li>Directories containing a &#8220;bin&#8221; directory are automatically treated as new applications. This is not a perfect way of checking for applications, as it can yield false positives, and not all applications use DLL&#8217;s, but it is pretty good for now.</li>
<li>Support was added for writing to a log file.</li>
<li>UnmanagedSocket now appropriately flags a closed connection.</li>
<li>Sending and receiving records was redone, partially because I didn&#8217;t fully understand how reading and writing sockets worked and the request would die if Receive didn&#8217;t yield the exact number of bytes requested.</li>
<li>When targetting .NET 2.0, Mono.FastCgi uses strictly generic collections. This reduces the size of the heap and should speed things up slightly.</li>
<li>Records are now sent at no more than half the maximum size to avoid problems with some web servers. This behavior is similar to that of Cherokee.</li>
<li>My patch to System.Net.Sockets.Socket was accepted. This patch is important because it removes the limitation of only supporting Unix and TCP sockets. (And may save some resources by not loading Mono.Unix if it isn&#8217;t needed.)</li>
<li>Tons of bug fixes.</li>
</ul>
<p align="center"><em><strong>and</strong></em></p>
<p>FastCGI Mono Server can handle full blown applications, like <a href="http://www.mojoportal.com/">mojoPortal</a>:</p>
<p><a href="http://www.flickr.com/photos/kerrick/1002036442/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1257/1002036442_463e55812d_o.png" alt="MojoPortal via FastCGI" height="383" width="836" /></a>This is not hosted on a virtual path, but automatically recognized because the application contains a &#8220;bin&#8221; directory.</p>
<h2>PLANS FOR THE COMING WEEK</h2>
<ol>
<li>I&#8217;m going to continue my work documenting servers. Each server presents different problems and test cases I may have overlooked and extends the reach of Mono.FastCgi.</li>
<li>Work with my mentor on what to do next.</li>
</ol>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>I&#8217;m not sure how I want to proceed with the socket issue. It turns out all the problems I was having stemmed from bad implementation on my part and problems in mod_fcgid. Now that they&#8217;re overcome, the unmanaged socket is working fine. Not adding a mono specific feature to System.Net.Sockets.Socket would allow me to keep the version dependency down, make things easier if building it against MS .NET in the future, and give me an abstraction for using Named Pipes on Windows.</p>
<p>Another challenge is how to proceed with Apache. Admittedly, there are two existing open source implementations, both with their flaws, but both lacking things like Bugzilla, and both with highly cryptic source code. It may be best to develop a new FastCGI module under the Mono Project umbrella, to protect the project&#8217;s interests. It could be based off code from mod_mono and design attributes from my FastCGI library.</p>
<h2>RESOURCES USED THIS WEEK</h2>
<ul>
<li>MojoPortal forums.</li>
<li>Abyss documentation.</li>
<li>Wrapper scripts for other applications.</li>
</ul>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=46&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/04/fastcgi-aspnet-server-status-report-10/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1257/1002036442_463e55812d_o.png" medium="image">
			<media:title type="html">MojoPortal via FastCGI</media:title>
		</media:content>
	</item>
		<item>
		<title>Want to test fastcgi-mono-server? Here&#8217;s the scoop.</title>
		<link>http://kerrick.wordpress.com/2007/08/01/want-to-test-fastcgi-mono-server-heres-the-scoop/</link>
		<comments>http://kerrick.wordpress.com/2007/08/01/want-to-test-fastcgi-mono-server-heres-the-scoop/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 02:10:19 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/08/01/want-to-test-fastcgi-mono-server-heres-the-scoop/</guid>
		<description><![CDATA[Subtitle: What you need to know about Cherokee, Lighttpd, and Apache2. Last Friday, I made it possible to compile and install your own copy of &#8220;fastcgi-mono-server&#8221; using standard methods. Now I have some in depth information on how to configure your server and what to look out for. lighttpd Lighty works fantastic. With about 5 [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=45&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong><em>Subtitle: What you need to know about Cherokee, Lighttpd, and Apache2.</em></strong></p>
<p><a href="http://kerrick.wordpress.com/2007/07/27/fastcgi-aspnet-server-status-report-9/">Last Friday</a>, I made it possible to compile and install your own copy of &#8220;fastcgi-mono-server&#8221; using <a href="http://www.gnu.org/software/autoconf/">standard methods</a>.  Now I have some in depth information on how to configure your server and what to look out for.</p>
<h2>lighttpd</h2>
<p>Lighty works fantastic. With about 5 minutes of configuration, you can get ASP.NET and all its glory running. Simply follow the instructions located <a href="http://www.public.asu.edu/~bnickel/fastcgi-mono-server/linux/lighttpd.html">here</a> or in the &#8220;doc/linux/&#8221; directory of the source package.</p>
<h2>cherokee</h2>
<p>Cherokee, up to and including Cherokee 0.5.6, has a bug where it fails to send an empty Stdin record if no input data is present. I could write a hack to get around this problem, but I&#8217;m holding out for now. The Cherokee 0.6 series, on the other hand, works very well with fastcgi-mono-server. If you&#8217;re ready to move to the 0.6 series, follow the instructions located <a href="http://www.public.asu.edu/~bnickel/fastcgi-mono-server/linux/cherokee.html">here</a> or in the &#8220;doc/linux/&#8221; directory of the source package.</p>
<h2>apache2</h2>
<p>Apache&#8217;s FastCGI situation is problematic. There are currently 2 implementations of FastCGI that I&#8217;m aware of: <a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi</a> and <a href="http://fastcgi.coremail.cn/">mod_fcgid</a>, and neither one of them is working just right. Mod_fastcgi was designed by the authors of FastCGI to be a replacement for CGI (hence the name), and is strongly tied to the paradigm of each file being its own application. It does have some tricks which would let a single server be used, but it sends some <em>very</em> unusual and sometimes junk parameters back to the server. It would require some major hacks to transform its parameters back into values that the server could understand.</p>
<p>Mod_fcgid, on the other hand, has the advantage of being younger, hipper, and more in tune with the concept of script servers. It is almost perfect except for the fact it sends the entire contents of the response to the server rather than stripping off the status line and sending it as r-&gt;status_line. This causes Apache to reject the response and display an error message. fastcgi-mono-server doesn&#8217;t send a status line of the status is 200 (Ok), so it&#8217;ll only work for pages that don&#8217;t do anything fancy or crash.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=45&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/08/01/want-to-test-fastcgi-mono-server-heres-the-scoop/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 9</title>
		<link>http://kerrick.wordpress.com/2007/07/27/fastcgi-aspnet-server-status-report-9/</link>
		<comments>http://kerrick.wordpress.com/2007/07/27/fastcgi-aspnet-server-status-report-9/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 22:35:49 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/07/27/fastcgi-aspnet-server-status-report-9/</guid>
		<description><![CDATA[This is a status report for the week of July 23 &#8211; July 27. The major highlight of the week is the addition of autotools to SVN and a patch to System.Net.Sockets.Socket. THIS WEEK&#8217;S ACCOMPLISHMENTS The first accomplishment is the incorporation of autotools. You can now install the server using the standard methods. It does [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=44&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a status report for the week of July 23 &#8211; July 27. The major highlight of the week is the addition of autotools to SVN and a patch to System.Net.Sockets.Socket.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>The first accomplishment is the incorporation of <a href="http://www.gnu.org/software/autoconf/">autotools</a>. You can now install the server using the standard methods. It does not yet install assemblies into the GAC, but I plan on adding that by next week.</p>
<pre>svn co <a href="http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/">http://mono-soc-2007.googlecode.com/svn/trunk/brian/FastCgi/</a> fastcgi-mono-server
cd fastcgi-mono-server
./autogen.sh &amp;&amp; make &amp;&amp; sudo make install</pre>
<p>Once installed, you can use either of the following, for the 1.1 or 2.0 framework respectively:</p>
<pre>fastcgi-mono-server /socket=tcp:1234<strong>
- or -</strong>
fastcgi-mono-server2 /socket=tcp:1234</pre>
<p>Then use the methods discussed in previous reports to add support to the webserver. (<a href="http://kerrick.wordpress.com/2007/07/21/fastcgi-aspnet-server-status-report-678/">Lighttpd</a>, <a href="http://kerrick.wordpress.com/2007/06/01/fastcgi-aspnet-server-status-report-1/">Cherokee</a>)</p>
<p>The second accomplishment is a patch to the mono class library for System.Net.Sockets.Socket &lt;<a href="http://mono-soc-2007.googlecode.com/svn/trunk/brian/patches/System.Net.Sockets.Socket-endpoint.diff">http://mono-soc-2007.googlecode.com/svn/trunk/brian/patches/System.Net.Sockets.Socket-endpoint.diff</a>&gt;. It is a precursor to a constructor that will make a wrapper from the unmanaged to the managed socket.</p>
<h2>PLANS FOR THE COMING WEEK</h2>
<p>I&#8217;m going to continue working on what I&#8217;ve been working on but have not completed this week:</p>
<ol>
<li>I&#8217;m going to work with my mentor to develop a plan for a control panel and additional auto-configuration.</li>
<li>I&#8217;m going to work with the mono developers on &#8220;the socket issue&#8221;.</li>
<li>I&#8217;m going to contact developers of various FastCGI implementations on servers to overcome various issues I&#8217;ve encountered.</li>
</ol>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>Nothing major at the moment.</p>
<h2>RESOURCES USED THIS WEEK</h2>
<ul>
<li>MSDN and SharpDevelop (Windows) &#8211; Studying and testing out the Windows implementation of System.Net.Sockets.Socket.</li>
<li><a href="http://www.koders.com">http://www.koders.com</a> &#8211; Searching for information on WinSock2</li>
<li>various source packages &#8211; How to do things with autotools.</li>
</ul>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/44/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/44/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=44&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/07/27/fastcgi-aspnet-server-status-report-9/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 6/7/8</title>
		<link>http://kerrick.wordpress.com/2007/07/21/fastcgi-aspnet-server-status-report-678/</link>
		<comments>http://kerrick.wordpress.com/2007/07/21/fastcgi-aspnet-server-status-report-678/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 05:01:23 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/07/21/fastcgi-aspnet-server-status-report-678/</guid>
		<description><![CDATA[This is a status report for the weeks of July 2 &#8211; July 20. I first apologize for the lack of reports lately. A combination of family vacation, exams, reinstalling Linux, and lack of Internet access, among other things, combined with the spot I was at in the goals got the best of me. However, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=43&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a status report for the weeks of July 2 &#8211; July 20. I first apologize for the lack of reports lately. A combination of family vacation, exams, reinstalling Linux, and lack of Internet access, among other things, combined with the spot I was at in the goals got the best of me. However, I&#8217;ve come back more focused, with new ideas and plans, so the coming weeks should be more promising.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>This week I worked at re-prioritizing project goals, putting automatic configuration above a configuration application.</p>
<p>I implemented automatic application detection. Now you can simply call:</p>
<pre>fastcgi-mono-server /socket=tcp:1234 /automappaths</pre>
<p>That way you can just drop your ASPX files in the standard htdocs or public_html directories and an appropriate application is registered. This should overcome a lot of confusion in configuration and for automatic registration when creating new sub-domains or users.</p>
<p align="center"><a href="http://www.flickr.com/photos/kerrick/868396062/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1230/868396062_2b9dc5a53e.jpg" alt="automappaths" height="313" width="500" /></a></p>
<p>Beyond that, I got the server working perfectly on Lighttpd:</p>
<p>In /etc/lighttpd/conf.d/fastcgi.conf:</p>
<pre>#######################################################################
##
##  FastCGI Module
## ---------------
##
## http://www.lighttpd.net/documentation/fastcgi.html
##

server.modules += ( "mod_fastcgi" )

fastcgi.server = (
        ".aspx"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".asmx"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".ashx"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".asax"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".ascx"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".soap"   =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".rem"    =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".axd"    =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".cs"     =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".config" =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 )),
        ".dll"    =&gt; (( "host" =&gt; "127.0.0.1", "port" =&gt; 1234 ))
)</pre>
<p>In /etc/lighttpd/modules.conf:</p>
<pre>include "conf.d/fastcgi.conf"</pre>
<p>In /etc/lighttpd/lighttpd.conf:</p>
<pre>index-file.names = (
  "index.xhtml", "index.html", "index.htm", "default.htm", "index.php", "default.aspx", "index.aspx"
)</pre>
<p align="center"><a href="http://www.flickr.com/photos/kerrick/868396058/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1310/868396058_7d1db37026.jpg" alt="lighttpd" height="275" width="500" /></a></p>
<h2>PLANS FOR THE COMING WEEK</h2>
<ol>
<li>I&#8217;m going to work with my mentor to develop a plan for a control panel and additional auto-configuration.</li>
<li>I&#8217;m going to work with the mono developers on &#8220;the socket issue&#8221;.</li>
<li>I&#8217;m going to contact developers of various FastCGI implementations on servers to overcome various issues I&#8217;ve encountered.</li>
<li>I&#8217;m going to start reorganizing the source for autotools.</li>
<li>I&#8217;m going to continue work on documentation.</li>
</ol>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>I&#8217;ve had trouble getting enough time in due to family obligations and coursework. I&#8217;ve also had a lack of motivation due to a lack of clarity over how to address the control panel. Both of these problems should be resolved.</p>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=43&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/07/21/fastcgi-aspnet-server-status-report-678/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1230/868396062_2b9dc5a53e.jpg" medium="image">
			<media:title type="html">automappaths</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1310/868396058_7d1db37026.jpg" medium="image">
			<media:title type="html">lighttpd</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 5</title>
		<link>http://kerrick.wordpress.com/2007/06/29/fastcgi-aspnet-server-status-report-5/</link>
		<comments>http://kerrick.wordpress.com/2007/06/29/fastcgi-aspnet-server-status-report-5/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 21:53:26 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/06/29/fastcgi-aspnet-server-status-report-5/</guid>
		<description><![CDATA[This is a status report for the week of June 25 &#8211; June 29. This week started out rather slow, but I managed to get a large part of the configuration system completed. THIS WEEK&#8217;S ACCOMPLISHMENTS One goal of the project is to make it easy to configure the server. This week I created the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=41&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a status report for the week of June 25 &#8211; June 29. This week started out rather slow, but I managed to get a large part of the configuration system completed.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<p>One goal of the project is to make it easy to configure the server. This week I created the backing for a configuration system, which allows users to specify server options through either command line options or an XML file (that will be editable by a configuration ASP.NET application).</p>
<h3>Features:</h3>
<p><strong>1. Settings can be done written a number of ways that are both Linux and Windows friendly:</strong></p>
<p>Via the command line:</p>
<pre> /arg=VALUE
--arg=VALUE
 -arg=VALUE
 /arg VALUE
--arg VALUE
 -arg VALUE</pre>
<p>Via XML:</p>
<pre>&lt;Setting Name="arg" Value="VALUE" /&gt;
&lt;Setting&gt;
    &lt;Name&gt;arg&lt;/Name&gt;
    &lt;Value&gt;VALUE&lt;/Value&gt;
&lt;/Setting&gt;</pre>
<p><strong>2. All configuration options are stored in an XML definition file making it easy to add new arguments:</strong></p>
<pre>&lt;Setting Name="port" AppSetting="MonoServerPort" Type="UInt16"
    ConsoleVisible="True"&gt;
    &lt;Description&gt;
        &lt;para&gt;Specifies the TCP port number to listen on.&lt;br /&gt;
        To use this argument, "socket" must be set to "tcp".&lt;/para&gt;
    &lt;/Description&gt;
&lt;/Setting&gt;</pre>
<p><strong>3. The configuration manager does the basic checks and conversions:</strong></p>
<pre>try {
   port = (int) configmanager["port"];
} catch (ApplicationException e) {
   Console.WriteLine (e.Message);
   return 1;
}</pre>
<p>Reads the port argument and tries to convert it to a UInt16, and fails with:</p>
<pre>Error in argument "port". "xxx" cannot be converted to an integer.</pre>
<p>This also does checks for file and directory existence.</p>
<p><strong>4. Boolean options that default to true can be set to false in the command line:</strong></p>
<pre>/multiplex=False</pre>
<p><strong>5. All option descriptions are stored in an XML format that can be used by both the web and the console, with whitespace being gracefully ignored:</strong></p>
<pre>    &lt;Setting Name="nonstop" Type="Bool" ConsoleVisible="True"&gt;
        &lt;Description&gt;
            &lt;para&gt;Specifies not to stop the server by if "Enter" is pressed. This must be used when the server has no controlling terminal.&lt;/para&gt;
        &lt;/Description&gt;
    &lt;/Setting&gt;</pre>
<p>and</p>
<pre>    &lt;Setting Name="nonstop" Type="Bool" ConsoleVisible="True"&gt;
        &lt;Description&gt;
            &lt;para&gt;Specifies not to stop
            the server by if "Enter" is
            pressed. This must be used
            when the server has no
            controlling terminal.&lt;/para&gt;
        &lt;/Description&gt;
    &lt;/Setting&gt;</pre>
<p>both yield the following when &#8211;help is called:</p>
<pre>  /nonstop[=True|=False]     Specifies not to stop the server by if "Enter" is
                             pressed. This must be used when the server has no
                             controlling terminal.</pre>
<p><strong>6. Options can be set via the the application with all the same conversions:</strong></p>
<pre>configmanager ["port"] = "1234";
ushort port = (ushort) configmanager ["port"];</pre>
<p><strong>7. Order of precedence:</strong></p>
<p>When reading a setting, the command line is checked first, then the XML file (if loaded), then the AppSettings (stored in myexecutable.exe.config)</p>
<p>Hopefully, this class will be useful in other applications as well.</p>
<h3>In other news:</h3>
<p>Instead of just not working at all on Apache, it now fails badly. Needless to say, that&#8217;s very exciting news. It was very last minute that this change occurred, so there will be much work to do next week.</p>
<h2>PLANS FOR THE COMING WEEK</h2>
<p>Next week will be continuing with the work of this week. I will continue to work the Apache angle and hopefully get things working, and I&#8217;ll finish up the ConfigurationManager and add a custom ApplicationHost that can bond with it. This week I got through the harder problem of &#8220;Where do I even begin?&#8221; so next week should feature a lot of progress.</p>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>It was really hard to get grounded on an initial idea for the ConfigurationManager. There were a lot of issues like how to organize things, what the XML should look like, etc. It really slowed me down and I went through many iterations I didn&#8217;t really like before I reached my final solution.</p>
<h2>RESOURCES USED THIS WEEK</h2>
<ul>
<li>Pencil and Paper &#8211; Organizing my thoughts on paper is usually the last thing I want to do, but it really helps clarify a lot of things and I think makes your brain operate on a different level than usual.</li>
<li>MSDN &#8211; Looking up NameValueCollection.</li>
<li>Google &#8211; Searching for information on the ConfigurationManager.</li>
</ul>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=41&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/06/29/fastcgi-aspnet-server-status-report-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
		<item>
		<title>FastCGI ASP.NET Server Status Report 4</title>
		<link>http://kerrick.wordpress.com/2007/06/24/fastcgi-aspnet-server-status-report-4/</link>
		<comments>http://kerrick.wordpress.com/2007/06/24/fastcgi-aspnet-server-status-report-4/#comments</comments>
		<pubDate>Sun, 24 Jun 2007 23:19:03 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Summer of Code 2007]]></category>

		<guid isPermaLink="false">http://kerrick.wordpress.com/2007/06/24/fastcgi-aspnet-server-status-report-4/</guid>
		<description><![CDATA[This is the status report for June 18 &#8211; June 22. This week was mostly spent doing cleanup, documenting, and applying the final parts of the FastCGI specification. THIS WEEK&#8217;S ACCOMPLISHMENTS I completely documented the Mono.FastCgi namespace using XML documentation. I submitted 6 patches to XSP, 3 code changes and documentation on 4 files. I [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=38&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is the status report for June 18 &#8211; June 22. This week was mostly spent doing cleanup, documenting, and applying the final parts of the FastCGI specification.</p>
<h2>THIS WEEK&#8217;S ACCOMPLISHMENTS</h2>
<ul>
<li>I completely documented the Mono.FastCgi namespace using XML documentation.</li>
<li>I submitted 6 patches to XSP, 3 code changes and documentation on 4 files.</li>
<li>I finished the implementation of the FastCGI protocol except for the unmanaged socket.</li>
<li>I implemented buffers for the sending and receiving of data and buffer management on the server to greatly reduce the amount of memory allocation performed.</li>
<li>I started work on an unmanaged socket wrapper.</li>
<li>I researched the configuration manager and how to store the configuration.</li>
<li>I submitted a bug report on Cherokee&#8217;s FastCGI implementation.</li>
</ul>
<h2>PLANS FOR THE COMING WEEK</h2>
<p>I plan to finish my work on configuration which should allow me to simplify and clean up server.cs and implement configuration files for things that don&#8217;t necessarily need to be done in the command line. Additionally, I will test the work I&#8217;ve done with the socket wrapper to try and get Apache working. Then I&#8217;ll start writing an ASP.NET configuration page for the server.</p>
<h2>CHALLENGES I&#8217;M FACING</h2>
<p>Nothing major at the moment.</p>
<h2>RESOURCES USED THIS WEEK</h2>
<ul>
<li><a href="http://www.koders.com/">http://www.koders.com/</a> &#8211; Searching Mono&#8217;s System.Net.Sockets library.</li>
</ul>
<p>I apologize of the lateness of this report. I had to go to El Centro for my grandmother&#8217;s 75 birthday and didn&#8217;t have it done by the time I had to leave.</p>
<p>Sincerely,<br />
Brian Nickel</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kerrick.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kerrick.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kerrick.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kerrick.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kerrick.wordpress.com&#038;blog=822506&#038;post=38&#038;subd=kerrick&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kerrick.wordpress.com/2007/06/24/fastcgi-aspnet-server-status-report-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/98aca67bf8a2e2470bc1beb84ce40beb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kerrick</media:title>
		</media:content>
	</item>
	</channel>
</rss>
