<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>lighty's life: Category lighttpd</title>
    <link>http://blog.lighttpd.net/articles/category/lighttpd</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Growing the team</title>
      <description>The dev team has gotten some new members recently that you might not know of. Here&amp;#8217;s a heads up (in alphabetical order):
	&lt;ul&gt;
	&lt;li&gt;hoffie&lt;/li&gt;
		&lt;li&gt;icy&lt;/li&gt;
		&lt;li&gt;nitrox&lt;/li&gt;
		&lt;li&gt;stbuehler&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If you hang out in #lighttpd, you will already know these names.&lt;/p&gt;


	&lt;p&gt;That being said, there is also some news about the state of the development of lighty.&lt;/p&gt;


	&lt;p&gt;Lighty is a great webserver and we all love it. But if you use it for quite some time, you&amp;#8217;ll eventually find out that it&amp;#8217;s not perfect. There are some oddities and shortcomings that cannot be ironed out without rewriting a significant part of the core.&lt;/p&gt;


	&lt;p&gt;This is where I had the idea to start all over.
With lessons learned from the past, we could write a new version of lighty that fixes the design issues the current versions have. But at the same time keep all the good stuff and remain fairly compatible.
The main idea to be fast and lightweight is still valid and if you are familiar with 1.4.x or 1.5, you will have no problems with the new version.&lt;/p&gt;


	&lt;p&gt;Jan had the idea to use glib for stuff like strings/buffers and arrays. He wanted to rewrite the corresponding parts and did so in a branch of his.
I proposed to take this even further and use glib throughout the source. It makes coding easier, faster and in the end more secure because you can rely on proven and well tested source.&lt;/p&gt;


	&lt;p&gt;stbuehler jumped in and created a new branch where he started to hack on an all new lighty using the ideas from above. The following days we discussed a lot &amp;#8211; and still do so &amp;#8211; about the new design. What we could do better, what shortcomings we wanted to fix.&lt;/p&gt;


	&lt;p&gt;The result is nothing less but a more flexible and faster design for lighty.&lt;/p&gt;


	&lt;p&gt;This sounds awesome but where is the catch you might think.
Well, currently we have not too much code ready but we are actively hacking on it. Do not ask when it will be released, there is no estimated date. We are still at the very beginning of the new version but hope to have it some day become the official Lighttpd 2.0&lt;/p&gt;


	&lt;p&gt;We created a &lt;a href="http://redmine.stbuehler.de/wiki/lighttpd-sandbox/Plans_for_2_0"&gt;page&lt;/a&gt; that lists some of the (technical) plans we currently have. You might find some of them interesting.&lt;/p&gt;


	&lt;p&gt;This is it for today folks. Hope you like the route we are taking and maybe drop us a line in #lighttpd (freenode) or in the comments.&lt;/p&gt;
</description>
      <pubDate>Wed, 23 Jul 2008 14:43:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:530e6f8c-284b-41a6-b5f1-00639abb707d</guid>
      <author>icy</author>
      <link>http://blog.lighttpd.net/articles/2008/07/23/a-new-beginning</link>
      <category>lighttpd</category>
      <category>lighttpd</category>
      <category>2.0</category>
      <category>lighty</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/5428</trackback:ping>
    </item>
    <item>
      <title>PRE-RELEASE: lighttpd-1.4.19-r2118</title>
      <description>&lt;p&gt;After quite some time lighttpd is moving forward again. Please give this pre-release a try and check if it drops in nicely and doesn&amp;#8217;t cause any new issues.&lt;/p&gt;


	&lt;p&gt;It is mostly a bug-release and we want to make sure it is a good release. If this pre-release passes your tests, we&amp;#8217;ll put the real release online in a few days.&lt;/p&gt;


	&lt;p&gt;Download: &lt;a href="http://opensu.se/~darix/lighttpd/"&gt;http://opensu.se/~darix/lighttpd/&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;ChangeLog: &lt;a href="http://trac.lighttpd.net/trac/browser/branches/lighttpd-1.4.x/NEWS"&gt;http://trac.lighttpd.net/trac/browser/branches/lighttpd-1.4.x/NEWS&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 05 Mar 2008 21:48:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:20625794-c283-4de4-986e-f40409a8217a</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2008/03/05/pre-release-lighttpd-1-4-19-r2118</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/5261</trackback:ping>
    </item>
    <item>
      <title>GSoC: collecting ideas</title>
      <description>&lt;p&gt;Google is doing a the Summer of Code again and I was approached from different sides to participate this year. There is already a lot going on in &lt;span class="caps"&gt;SVN&lt;/span&gt; again working towards a new 1.4.19 release, but for the future we want to attract more developers for more new, great features.&lt;/p&gt;


	&lt;p&gt;Before I submit the application request I would like to collect some more ideas what we would like to see to be done. At &lt;a href="http://trac.lighttpd.net/trac/wiki/GSoC2008/Ideas"&gt;GSoC2008/Ideas&lt;/a&gt; I added my short list of projects that I would like to mentor.&lt;/p&gt;


	&lt;p&gt;If you would like to be a mentor too, please add your own list.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Documentation improvements &lt;/li&gt;
		&lt;li&gt;Integration into web-panels&lt;/li&gt;
		&lt;li&gt;maintaining the OpenWRT port&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;are just some small ideas where we could take help from non-developers.&lt;/p&gt;
</description>
      <pubDate>Tue, 04 Mar 2008 11:25:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a71b6fc9-0821-4a78-b5bd-4742aeba2803</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2008/03/04/gsoc-collecting-ideas</link>
      <category>lighttpd</category>
      <category>GSoC</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/5230</trackback:ping>
    </item>
    <item>
      <title>Project Glib: it compiles ... mostly</title>
      <description>&lt;p&gt;Part of my ongoing, hidden effort to port lighttpd to glib I can now at least say: it compiles.&lt;/p&gt;


	&lt;p&gt;Well, mostly. The core does compile and &lt;i&gt;mod_staticfile&lt;/i&gt; is also mostly done. Mostly, as I don&amp;#8217;t have decided on how to handle the config-file handling yet.&lt;/p&gt;
&lt;p&gt;So, what has been done so far:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;i&gt;buffer.c&lt;/i&gt; and &lt;i&gt;buffer.h&lt;/i&gt; are gone and are replaced by &lt;i&gt;GString&lt;/i&gt;&lt;/li&gt;
		&lt;li&gt;&lt;i&gt;array.c&lt;/i&gt; is gone and is replace by &lt;i&gt;GHashTable&lt;/i&gt; or &lt;i&gt;GPtrArray&lt;/i&gt;&lt;/li&gt;
		&lt;li&gt;&lt;i&gt;array.h&lt;/i&gt; will vanish when the &lt;i&gt;data_&amp;#8230;c&lt;/i&gt; goes away&lt;/li&gt;
		&lt;li&gt;&lt;i&gt;log.c&lt;/i&gt; is now a wrapper around &lt;i&gt;g_log_&amp;#8230;&lt;/i&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;As you see this is ripping out the basic data-structures and replaces them by a glib look-alike.&lt;/p&gt;


	&lt;p&gt;This isn&amp;#8217;t just a drop-in replacement as the structures use other field-names and sometimes have a slightly different meaning.&lt;/p&gt;


	&lt;p&gt;One example is GString vs. buffer:&lt;/p&gt;


&lt;pre&gt;
buffer {
  char *ptr;
  size_t used;
  size_t size;
};

GString {
  char *str;
  size_t len;
  size_t allocated_len;
};
&lt;/pre&gt;

	&lt;p&gt;While &lt;i&gt;str&lt;/i&gt; and &lt;i&gt;ptr&lt;/i&gt;, and &lt;i&gt;allocated_len&lt;/i&gt; and &lt;i&gt;size&lt;/i&gt; match, &lt;i&gt;used&lt;/i&gt; and &lt;i&gt;len&lt;/i&gt; differ by one byte (&lt;i&gt;used&lt;/i&gt; includes the &lt;i&gt;&lt;span class="caps"&gt;NUL&lt;/span&gt;&lt;/i&gt;-byte, &lt;i&gt;len&lt;/i&gt; doesn&amp;#8217;t).&lt;/p&gt;


	&lt;p&gt;One side-effect of this boring work is seeing the code-size shrinking, piece by piece.&lt;/p&gt;


	&lt;p&gt;Seeing old, sometimes dirty code vanish is another nice side-effect. Like the &lt;i&gt;log_error_write()&lt;/i&gt; call &amp;#8230; man &amp;#8230;&lt;/p&gt;</description>
      <pubDate>Tue, 19 Feb 2008 17:14:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:8e6b7444-2eb1-4564-9806-febdf9ce196d</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2008/02/19/project-glib-it-compiles-mostly</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4908</trackback:ping>
    </item>
    <item>
      <title>Weekends Projects: lua as config-language</title>
      <description>&lt;p&gt;With the first implementation of mod_cml and later mod_magnet smart users asked why we don&amp;#8217;t use lua also as config language for lighttpd.&lt;/p&gt;


	&lt;p&gt;Up to now I was pushing back and saying that a huge change in the configfile would make upgraders very unhappy as they would have to rewrite the config files. Looking at what we have for 1.5.0 right now, we need tweaks anyway.&lt;/p&gt;
&lt;p&gt;This always happens if you rip a thing apart: you see more things that should be cleaned up. My first experiments are a bit done:&lt;/p&gt;


&lt;pre&gt;
server = {
        name = "my.example.org",
        modules = {
                "mod_indexfile" 
        },
        ["errorfile-prefix"] = "foobar",
}

sockets = {
        [":80"] = {
                server = { name = "foo.example.org" },
                HTTP = { url = function(url)
                        if url == "foo" then
                                server.name = "baz.example.org" 
                        end
                end },
        }
}

sockets[":80"].HTTP.url("foo")
print(server.name)
&lt;/pre&gt;

	&lt;p&gt;This is a first idea. It shows how the &lt;span class="caps"&gt;LUA&lt;/span&gt; syntax isn&amp;#8217;t sooo different from our current config syntax.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;The global variables, stay global as now.&lt;/li&gt;
		&lt;li&gt;socket conditionals is now a simple array of sockets &lt;/li&gt;
		&lt;li&gt;conditionals are functions, now you can do what you want with it&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I hope that I can handle the full config syntax into this structure. For now it is looks more appealing that ripping the old config-parser code apart and turn it into glib-notation. With all the conditionals and types we basicly have implemented our own scripting language.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s see where this leads too.&lt;/p&gt;</description>
      <pubDate>Sat, 09 Feb 2008 23:09:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:bfbf72c7-42a9-47c4-a922-27cceb02834f</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2008/02/09/weekends-projects-lua-as-config-language</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4862</trackback:ping>
    </item>
    <item>
      <title>Weekend Projects: killing buffer.c and array.c</title>
      <description>&lt;p&gt;As part of a weekend project I&amp;#8217;m ripping 1.5 apart a bit. I worked with glib for quite some time now and feel the need to replace the base-structures around &amp;#8220;buffer&amp;#8221; (strings) and &amp;#8220;array&amp;#8221; (hash) apart and replace it with the glib counter-parts.&lt;/p&gt;


	&lt;p&gt;To make this a nice experience and that I don&amp;#8217;t harm anyone else I imported trunk into a local bzr tree:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;bzr clone svn://svn.lighttpd.net/lighttpd/&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;to clone the &lt;span class="caps"&gt;SVN&lt;/span&gt; tree.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s see how well that experiment goes.&lt;/p&gt;
</description>
      <pubDate>Sat, 09 Feb 2008 08:46:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:2d7a3d7e-eac2-4753-8a2a-161cf46f615d</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2008/02/09/weekend-projects-killing-buffer-c-and-array-c</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4850</trackback:ping>
    </item>
    <item>
      <title>ANNOUNCE: lighttpd 1.4.18 </title>
      <description>&lt;p&gt;darix released &lt;a href="http://www.lighttpd.net/2007/9/9/1-4-18-speeding-up-a-bit"&gt;1.4.18&lt;/a&gt; which contains a fix for a buffer-overrun in the fastcgi protocol.&lt;/p&gt;
</description>
      <pubDate>Sun, 09 Sep 2007 21:43:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:3dea0c63-20a1-4199-a5b6-94d6f0b0ed9b</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2007/09/09/1-4-18-released</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4772</trackback:ping>
    </item>
    <item>
      <title>PRE-RELEASE: lighttpd-1.5.0-r1992</title>
      <description>&lt;p&gt;Some time passed since the last pre-release, time for an update.&lt;/p&gt;


	&lt;p&gt;Everyone who runs 1.5.0 already has to upgrade to get fixes several vulnerabilities that got fixed in the 1.4.x branch already.&lt;/p&gt;


	&lt;p&gt;If this release passes your requirements it will be the last 1.5.0 pre-release. Afterwards we will start the the normal 1.5.x series and will add the missing features in 1.5.1 and later.&lt;/p&gt;


	&lt;p&gt;Download:
  &lt;a href="http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz"&gt;http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;md5sum: &lt;code&gt;b62e2442ee0f3395844b54385b14397a&lt;/code&gt;&lt;/p&gt;


&lt;h3&gt;Changes&lt;/h3&gt;

	&lt;ul&gt;
	&lt;li&gt;added native support for mingw32&lt;/li&gt;
		&lt;li&gt;added experimental option to compile without glib &lt;/li&gt;
		&lt;li&gt;fixed mod_uploadprogress&lt;/li&gt;
		&lt;li&gt;fixed endless loop on freebsd-sendfile (&lt;a href="http://trac.lighttpd.net/trac/ticket/1289"&gt;#1289&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed compile in &lt;span class="caps"&gt;IRIX&lt;/span&gt; and HP/UX&lt;/li&gt;
		&lt;li&gt;fixed hardcoded font-sizes in mod_dirlisting (&lt;a href="http://trac.lighttpd.net/trac/ticket/1267"&gt;#1267&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed different ETag length on 32/64 platforms (&lt;a href="http://trac.lighttpd.net/trac/ticket/1279"&gt;#1279&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed conditional dir-listing.exclude (&lt;a href="http://trac.lighttpd.net/trac/ticket/930"&gt;#930&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed &lt;span class="caps"&gt;CONTENT&lt;/span&gt;_LENGTH = -1 in mod_cgi (&lt;a href="http://trac.lighttpd.net/trac/ticket/1276"&gt;#1276&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed typecast of &lt;span class="caps"&gt;NULL&lt;/span&gt; on execl() (&lt;a href="http://trac.lighttpd.net/trac/ticket/1235"&gt;#1235&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed extra Content-Length header on 1xx, 204 and 304 (&lt;a href="http://trac.lighttpd.net/trac/ticket/1002"&gt;#1002&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed mysql server reconnects (&lt;a href="http://trac.lighttpd.net/trac/ticket/518"&gt;#518&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;fixed prctl() usage (&lt;a href="http://trac.lighttpd.net/trac/ticket/1310"&gt;#1310&lt;/a&gt;, &lt;a href="http://trac.lighttpd.net/trac/ticket/1333"&gt;#1333&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://secweb.se/en/advisories/lighttpd-fastcgi-remote-vulnerability/"&gt;fixed FastCGI header overrun in mod_proxy_backend_fastcgi&lt;/a&gt; (reported by mattias@secweb.se)&lt;/li&gt;
		&lt;li&gt;fixed mem-leak in mod_auth (reported by Stefan Esser)&lt;/li&gt;
		&lt;li&gt;fixed crash with md5-sess and cnonce not set in mod_auth (reported by Stefan Esser)&lt;/li&gt;
		&lt;li&gt;fixed missing check for base64 encoded string in mod_auth and Basic auth
    (reported by Stefan Esser)&lt;/li&gt;
		&lt;li&gt;fixed possible crash in Auth-Digest header parser on trailing WS in
    mod_auth (reported by Stefan Esser)&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Thu, 06 Sep 2007 22:21:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:546c73e8-eb68-4171-96a3-578a881f1b14</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2007/09/06/pre-release-lighttpd-1-5-0-r1992</link>
      <category>lighttpd</category>
      <category>1.5.0</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4760</trackback:ping>
    </item>
    <item>
      <title>There is an Angel for lighty</title>
      <description>&lt;p&gt;In &lt;a href="http://trac.lighttpd.net/trac/changeset/1981"&gt;changeset [1981]&lt;/a&gt; I added a angel process to the lighttpd build. It solves several problems when we have everything running as expected:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;span class="caps"&gt;SIGHUP&lt;/span&gt; leads to a graceful restart (config reloads)&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;SIGINT&lt;/span&gt; is graceful shutdown as now&lt;/li&gt;
		&lt;li&gt;all unhandled signals lead to a restart of the lighttpd process&lt;/li&gt;
	&lt;/ul&gt;
&lt;p&gt;We have to be careful with the angel as it will stay alive and stay running as the user it is started as (usually root). That&amp;#8217;s the only way we can restart lighttpd from scratch on restart.&lt;/p&gt;


	&lt;p&gt;This will also solve other problems in 1.5.0:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://trac.lighttpd.net/trac/ticket/1271"&gt;bug #1271, unsafe logfiles&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;... and perhaps others&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The angel has to implement some security measures to stay clean:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;the angel can only start the lighttpd binary which is compiled into the angel at compile time&lt;/li&gt;
		&lt;li&gt;if run as root the starting user has to be root too or be in the same group as the owner of the lighttpd binary&lt;/li&gt;
		&lt;li&gt;... and perhaps more restrictions&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;As extra features we will add ulimit support to let lighttpd die in case it is using to much memory. But that&amp;#8217;s for later.&lt;/p&gt;</description>
      <pubDate>Sun, 02 Sep 2007 22:36:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:e0c50ba0-763d-4ab4-af0e-bf7ef161f803</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2007/09/02/there-is-an-angel-for-lighty</link>
      <category>lighttpd</category>
      <category>angel</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4739</trackback:ping>
    </item>
    <item>
      <title>lighttpd at the Kieler LinuxTage</title>
      <description>&lt;p&gt;I&amp;#8217;ll give a presentation on lighttpd at the &lt;a href="http://www.kieler-linuxtage.de/"&gt;Kieler Linuxtage&lt;/a&gt; on September 8th, 2007. I&amp;#8217;ll talk about lighttpd, its past and future, the special modules and performance.&lt;/p&gt;


	&lt;p&gt;I will also try to give some content to the un-conference going on at the same time. Perhaps some MySQL Proxy stuff ?&lt;/p&gt;
</description>
      <pubDate>Tue, 28 Aug 2007 11:43:55 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:95deccaf-a786-4ae4-a519-b09aee7cf5b3</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2007/08/28/lighttpd-at-the-kieler-linuxtage</link>
      <category>lighttpd</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/4726</trackback:ping>
    </item>
  </channel>
</rss>
