<?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"
	>

<channel>
	<title>My b0yfr13nd 1s 4 g33k</title>
	<atom:link href="http://www.myboyfriendisageek.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.myboyfriendisageek.com</link>
	<description>(but I love him)</description>
	<pubDate>Fri, 15 Aug 2008 17:49:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>GNU HTTP Tunnel for S60</title>
		<link>http://www.myboyfriendisageek.com/2008/symbian/gnu-http-tunnel-s60/</link>
		<comments>http://www.myboyfriendisageek.com/2008/symbian/gnu-http-tunnel-s60/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 23:22:31 +0000</pubDate>
		<dc:creator>Renaud</dc:creator>
		
		<category><![CDATA[Symbian]]></category>

		<category><![CDATA[gnu]]></category>

		<category><![CDATA[http tunnel]]></category>

		<category><![CDATA[pips]]></category>

		<category><![CDATA[posix]]></category>

		<category><![CDATA[S60]]></category>

		<guid isPermaLink="false">http://myboyfriendisageek.com/?p=1</guid>
		<description><![CDATA[
Here&#8217;s the story :

I subscribed, few weeks ago, to an &#8220;unlimited data plan&#8221; from my mobile provider. I was so enthusiast that I sold my old Nokia N70 (Symbian OS8) on Ebay to buy an expensive Nokia E90 (OS9), infinitely more adequate for heavy use of www and networking applications.

I quiclky discovered &#8220;what&#8217;s under the [...]]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle: The story--></p>
<p align="justify"><img style="border-width: 0px; margin: 0px 10px; width: 101px; height: 127px" src="http://myboyfriendisageek.com/wp-content/uploads/2008/03/httptunnel.png" border="0" alt="httptunnel" hspace="10" width="101" height="127" align="left" /><strong><span style="font-size: 14pt">H</span></strong>ere&#8217;s the story :</p>
<p><br/></p>
<p align="justify">I subscribed, few weeks ago, to an &#8220;unlimited data plan&#8221; from my mobile provider. I was so enthusiast that I sold my old Nokia N70 (Symbian OS8) on Ebay to buy an expensive <a href="http://europe.nokia.com/A4346040" target="_blank">Nokia E90</a> (OS9), infinitely more adequate for heavy use of <em>www</em> and networking applications.</p>
<p><br/></p>
<p align="justify">I quiclky discovered &#8220;what&#8217;s under the hood&#8221; : this &#8220;unlimited&#8221; data plan is restricted to HTTP traffic on port 80 by use of proxy filtering that mean no IMAP, no POP, no VNC, nor TELNET&#8230; <img src='http://www.myboyfriendisageek.com/wp-includes/images/smilies/icon_mad.gif' alt=':-x' class='wp-smiley' /> </p>
<p>Moreover, there&#8217;s an extra filtering on <em>User-Agent</em> to (loosely) prevent its use from your computer by using the phone as modem for example.</p>
<p><br/></p>
<p align="justify">I quickly had to found a solution, and the only one available was <a href="http://en.wikipedia.org/wiki/Tunneling_protocol" target="_blank">Tunneling</a>, more precisely <a href="http://en.wikipedia.org/wiki/Http_tunnel" target="_blank">HTTP Tunneling</a>, since writing <a href="http://en.wikipedia.org/wiki/TUN/TAP" target="_blank">Tun/Tap drivers</a> on Symbian platforms is not possible without manufacturer&#8217;s SDK. After some Googling, I found the <a href="http://www.nocrew.org/software/httptunnel.html" target="_blank">GNU HTTP Tunnel</a> under GPL license.</p>
<p><br/><br />
<span id="more-1"></span></p>
<p style="text-align: center" align="justify"><img style="width: 64px; height: 64px" src="http://myboyfriendisageek.com/wp-content/uploads/2008/03/pips.thumbnail.jpg" alt="PIPS" width="64" height="64" /></p>
<p><br/></p>
<p align="justify">Thanks to port of Posix libraries on Symbian OS9 (<a href="http://developer.symbian.com/wiki/display/pub/P.I.P.S." target="_blank">P.I.P.S</a>), the porting of the project to S60 tooks less than 48h. The most difficult parts were :</p>
<ol>
<li>No poll() function</li>
<li>Small heap/stack</li>
<li>lack of console</li>
</ol>
<p>The first point was solved by replacing poll() functions by select(), using threading as workaround to limitations due to implementation :</p>
<p><br/><br />
<span style="font-size: 7pt"><em>&#8220;select operation cannot be called for the second time on the same socket descriptor before the first select operation on the same socket descriptor completes. (i.e) Only one select operation can be outstanding on a Socket. This is because of the limitation of the underlying Ioctl Ioctl operation. Only one operation may be outstanding for each socket.&#8221;</em></span><br />
<br/></p>
<p>The second point involved reducing size of local arrays, and by increasing default heap/stack size of application using correct statements in mmp file.</p>
<p><br/></p>
<p>Concerning the lack of console, I used <a href="http://myboyfriendisageek.com/wp-content/uploads/2008/03/stdioserver_s60_1_0.sis">stdioserver</a> as output console, and <a href="http://wiki.opensource.nokia.com/projects/Python_for_S60" target="_blank">Python</a> for passing command line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.myboyfriendisageek.com/2008/symbian/gnu-http-tunnel-s60/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
