<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-474623074325553428</id><updated>2012-04-29T09:56:36.125-07:00</updated><category term='i2p'/><title type='text'>Hacking Log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-6476475394366805875</id><published>2012-04-12T17:57:00.001-07:00</published><updated>2012-04-12T20:12:23.029-07:00</updated><title type='text'>JingleFT in main branch</title><content type='html'>Jingle file transfer has finally been merged into Gajim's default branch. Feel free to check it out, and report any bugs you find.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT:&lt;/b&gt; Actually it is not yet merged right now, give it one week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-6476475394366805875?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/6476475394366805875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2012/04/jingleft-in-main-branch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6476475394366805875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6476475394366805875'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2012/04/jingleft-in-main-branch.html' title='JingleFT in main branch'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-1420716950314886792</id><published>2012-02-11T17:04:00.000-08:00</published><updated>2012-02-12T16:04:59.510-08:00</updated><title type='text'>Stalled</title><content type='html'>I'm still working on jingleFT for Gajim (not much progress there). The &lt;a href="http://hacklogger.blogspot.com/2011/11/proposed-changes-to-xep-0135.html"&gt;changes for xep-135&lt;/a&gt; (no progress at all there). A secret project involving i2p (I don't talk about projects before having done a beta. No much progress there either).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The jingleFT branch of Gajim does need some refactoring. I made a state diagram of the file transfer, and it looks awful. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i.imgur.com/qKn0H.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="700" width="500" src="http://i.imgur.com/qKn0H.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Clearly there are unnecessary states like transport info and proxy activated. The events are somewhat ambiguous, and the states accepted and initialized should be merged into one. &lt;br /&gt;&lt;br /&gt;I'll fix it. See if I can shake off being so stalled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-1420716950314886792?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/1420716950314886792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2012/02/stalled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/1420716950314886792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/1420716950314886792'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2012/02/stalled.html' title='Stalled'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-5268614043251863092</id><published>2012-01-16T17:44:00.000-08:00</published><updated>2012-01-16T17:44:44.106-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i2p'/><title type='text'>Getting into I2P</title><content type='html'>For a long time I have heard of I2P and I thought it was a good idea, but never actually tried to install it. Today I installed I2P and I have to say that I'm amazed by it. I was expecting a barely functioning app, very slow response times and crappy ported apps running on top of it. I was wrong.&lt;br /&gt;&lt;br /&gt;The I2P router console is simply great. It include many apps, such as its own web, email and BitTorrent servers. I'm not very good at describing stuff, and reading about it's probably too dry. I would recommend anybody to try it first if they are interested. It is like discovering a new internet inside of the internet.&lt;br /&gt;&lt;br /&gt;It is true that it lacks a lot of services, and that's why I want to know more about developing apps for I2P.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-5268614043251863092?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/5268614043251863092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2012/01/getting-into-i2p.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5268614043251863092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5268614043251863092'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2012/01/getting-into-i2p.html' title='Getting into I2P'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-75970827463011641</id><published>2011-12-31T18:56:00.000-08:00</published><updated>2011-12-31T18:56:24.839-08:00</updated><title type='text'>Jingle Bells, Jingle all the way</title><content type='html'>What have I been doing? I used the holidays to finally get some work done in the jingle_FT branch of gajim. It's progressing just fine. I would hope that before my vacations ends it will be stable enough to be merged into the main branch.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://i.imgur.com/r8RLs.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="564" width="490" src="http://i.imgur.com/r8RLs.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It would be a really good help if you check out the branch and report some bugs. &lt;br /&gt;&lt;br /&gt;It is easy to do just follow these steps:&lt;br /&gt;&lt;br /&gt;1- Check out the latest jingleFT branch&lt;br /&gt;&lt;br /&gt;hg clone http://hg.gajim.org/gajim gajim &lt;br /&gt;&lt;br /&gt;cd gajim&lt;br /&gt;&lt;br /&gt;hg update jingleFT&lt;br /&gt;&lt;br /&gt;2- Report any bugs you find.&lt;br /&gt;&lt;br /&gt;Go to https://trac.gajim.org/newticket&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-75970827463011641?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/75970827463011641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/12/jingle-bells-jingle-all-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/75970827463011641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/75970827463011641'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/12/jingle-bells-jingle-all-way.html' title='Jingle Bells, Jingle all the way'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-4724888678801436535</id><published>2011-11-27T17:47:00.000-08:00</published><updated>2011-11-27T17:52:37.444-08:00</updated><title type='text'>Proposed changes to XEP-0135</title><content type='html'>Hi, I been working on some changes to XEP-0135.&lt;br /&gt;&lt;br /&gt;* Replacing SI file transfer with jingle FT&lt;br /&gt;&lt;br /&gt;* Replacing section 6, with a link pointing to section 5 of XEP-0234,&lt;br /&gt;which already covers the same function.&lt;br /&gt;&lt;br /&gt;* Adding support for pubsub, only for finding files using the method I&lt;br /&gt;introduce bellow. It doesn't make much sense to traverse the directory&lt;br /&gt;of every user subscribed to a pubsub, but it will make a lot of sense&lt;br /&gt;searching for specific files. (XEP-0137 does not suffice for this)&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;A user is subscribed to the books pubsub channel. It sends a query,&lt;br /&gt;looking for a book "Romeo and Juliet - By Shakespeare". The&lt;br /&gt;subscribers reply if they get a match with information about their&lt;br /&gt;files. The initiator requests the file from whoever has what he wants&lt;br /&gt;and file transfer starts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* A new section should be added to cover finding files by providing a&lt;br /&gt;criteria, instead of just asking for all the files.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;5.5 Finding Specific Files&lt;br /&gt;&lt;br /&gt;Finding files by asking for a file list is not very practical if there&lt;br /&gt;are too many files being shared. It is very resource intensive and it&lt;br /&gt;is understood that the user may not be interested in all of the files,&lt;br /&gt;but rather he or she would be interested in finding one specific file&lt;br /&gt;or one specific kind of file (text, image or videos).&lt;br /&gt;&lt;br /&gt;In order to do this, the identity stanza is used to match files by one&lt;br /&gt;or more fields i.e. 'name', 'date', 'size', etc...&lt;br /&gt;&lt;br /&gt;Example XX. Finding Specific Files&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;iq type='get'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;from='hag66 at shakespeare.lit/pda'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;to='darkcave at shakespeare.lit'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;id='find45'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; node='files'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;identity category='filesys' type='file' name='file1' /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/query&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/iq&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The fields in the identity stanza, are optional, but at least one&lt;br /&gt;field MUST be provided. In this example, the responders will match its&lt;br /&gt;files looking for the file names that contain 'file1' and are of the&lt;br /&gt;size 1024..&lt;br /&gt;&lt;br /&gt;Example XX. Returning with Matched Files&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;iq type='result'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;from='darkcave at macbeth.shakespeare.lit'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;to='hag66 at shakespeare.lit/pda'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;id='find45'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; node='files/somefile'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;identity category='filesys' type='file' name='file1'&lt;br /&gt;&lt;br /&gt;hash='552da749930852c69ae5d2141d3766b1'/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/query&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/iq&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A responding entity MUST include the name and the hash of the file.&lt;br /&gt;Since more than one responder may respond with the same file, it is&lt;br /&gt;strongly suggested that the initiator makes use of ranged file&lt;br /&gt;transfers (as defined in XEP-0234), to speed up the file transfer.&lt;br /&gt;&lt;br /&gt;Example XX. Finding files using Regular Expressions&lt;br /&gt;&lt;br /&gt;Regular expressions may be use to find files that match the&lt;br /&gt;expression. One or more fields can be used. The label attribute is&lt;br /&gt;optional.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;iq type='get'&lt;br /&gt;&lt;br /&gt; from='hag66 at shakespeare.lit/pda'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;to='darkcave at shakespeare.lit'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;id='find46'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;query xmlns='http://jabber.org/protocol/disco#info'&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; node='files'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;identity category='filesys' type='file' name='file1'/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;x xmlns='jabber:x:data' type='get'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;field var='ssn' type='text-single' label='Social Security Number'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;regex&amp;gt;([0-9]{3})-([0-9]{2})-([0-9]{4})&amp;lt;/regex&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/field&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/query&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/iq&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The XML character data of this element is the pattern to apply. The&lt;br /&gt;syntax of this content MUST be that defined for POSIX extended regular&lt;br /&gt;expressions, including support for Unicode.&lt;br /&gt;&lt;br /&gt;The &lt;regex/&gt; element MUST contain character data only (i.e., not&lt;br /&gt;contain any child elements) and MUST NOT possess any attributes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any feedback would be greatly appreciated, I just want to know if I am&lt;br /&gt;on the right track here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-4724888678801436535?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/4724888678801436535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/11/proposed-changes-to-xep-0135.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/4724888678801436535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/4724888678801436535'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/11/proposed-changes-to-xep-0135.html' title='Proposed changes to XEP-0135'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-2563657865613262972</id><published>2011-09-11T21:21:00.000-07:00</published><updated>2011-09-11T21:21:24.177-07:00</updated><title type='text'>GSOC is over, now what?</title><content type='html'>Let's review what I did this summer:&lt;br /&gt;&lt;br /&gt;* Stream Management&lt;br /&gt;&lt;br /&gt;* IBB fallback for jingleFT&lt;br /&gt;&lt;br /&gt;* Bidirectional Socks5 for jingleFT&lt;br /&gt;&lt;br /&gt;I'm satisfied with what I have accomplished this summer. It was a wonderful experience. I would like to thank Yann (my mentor), Kevin (for putting up with all my annoying questions), Matt and Tobias.&lt;br /&gt;&lt;br /&gt;My journey doesn't end here. I will continue to work in gajim. My goal is to have a full working implementation of jingle in gajim. For the bidirectional socks5, I had to rewrite a lot of stuff to make it work. Currently OpenSSL and proxies aren't working, but they will be fixed soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I've been a little distant this month because I've been partying like it is 1999&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.transformer-ivan.net/wp-content/uploads/2010/08/colbert.gif" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="200" width="200" src="http://www.transformer-ivan.net/wp-content/uploads/2010/08/colbert.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-2563657865613262972?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/2563657865613262972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/09/gsoc-is-over-now-what.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/2563657865613262972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/2563657865613262972'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/09/gsoc-is-over-now-what.html' title='GSOC is over, now what?'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-7848825287607475946</id><published>2011-07-31T19:23:00.000-07:00</published><updated>2011-07-31T19:23:45.323-07:00</updated><title type='text'>Bidirectional jingle socks5 file transfer in Gajim</title><content type='html'>I've been busy these couple of weeks trying to make bidirectional jingle socks5 file transfer in Gajim. Currently in Gajim, it is the receiver who connects to the sender.&lt;br /&gt;&lt;br /&gt;There are several class of interest here: SocksQueue, Socks5, Socks5Sender, Socks5Listener, and Socks5Receiver&lt;br /&gt;&lt;br /&gt;Socks5Listener is the class in charge of binding to a port and accepting connections.&amp;nbsp; SocksQueue manages the file transfer, it keeps track of when a transfer is completed or canceled.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Socks5Sender and Socks5Receiver, are in charge of sending and receiving the file, both of them are derived from the class Socks5. So, they are basically the same object with some minor differences.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LT1jM6oKZKY/TjXq9U59VPI/AAAAAAAAB30/xaV6XMAmSjA/s1600/Gajim_socks5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-LT1jM6oKZKY/TjXq9U59VPI/AAAAAAAAB30/xaV6XMAmSjA/s1600/Gajim_socks5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As it can be seen from this picture, both objects are fairly similar, except for the receiver having the connect, do_connect, is_connected methods and the sender having the send_file method.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Those objects are also in charged of the &lt;a href="http://tools.ietf.org/html/rfc1928"&gt;socks5 negotiation&lt;/a&gt; and they keep track of it by using this state machine: &lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="reference" id="table3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="left" width="20%"&gt;Status&lt;/th&gt;&lt;th align="left" width="20%"&gt;Operation&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&amp;nbsp;About to connect&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;send version and auth types&amp;nbsp; / initial read&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&amp;nbsp;read auth response / reply with desired auth type &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&amp;nbsp;send 'connect' request /&amp;nbsp; read connect request&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;&amp;nbsp;get approve of our request / approve connect&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;????? / read file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;&amp;nbsp;retrieve file / ????&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;There are more states, but these are the most important. What I have been doing so far is that have been modifying the objects so that they can emulate each other. Each object, for every state, will only do the thing that's after the "/" or before it. As I wrote the table, the operation in the left side of the "/" is what the receiver does and in the the right side of it, is what the sender does. &lt;br /&gt;&lt;br /&gt;So far in my code, the receiver and the sender, do the operations in from state 0-2 . But then I realized that my approach was wrong all along. Instead of making the objects do both operations, Socks5 should be able to do both operations, and then the receiver and the sender can just inherit that behavior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-7848825287607475946?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/7848825287607475946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/07/bidirectional-jingle-socks5-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/7848825287607475946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/7848825287607475946'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/07/bidirectional-jingle-socks5-file.html' title='Bidirectional jingle socks5 file transfer in Gajim'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-LT1jM6oKZKY/TjXq9U59VPI/AAAAAAAAB30/xaV6XMAmSjA/s72-c/Gajim_socks5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-4398099218001753388</id><published>2011-07-10T20:20:00.000-07:00</published><updated>2011-07-10T20:20:42.279-07:00</updated><title type='text'>IBB fallback working</title><content type='html'>The jingleFT branch of Gajim is now able to fall back to IBB when socks5 can't connect. Now, onto the testing phase. I have to write a test suite and maybe test IBB fallback with another client.&lt;br /&gt;&lt;br /&gt;There isn't much to update. It works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-4398099218001753388?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/4398099218001753388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/07/ibb-fallback-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/4398099218001753388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/4398099218001753388'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/07/ibb-fallback-working.html' title='IBB fallback working'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-6802276565115221897</id><published>2011-06-30T16:47:00.000-07:00</published><updated>2011-06-30T16:47:52.152-07:00</updated><title type='text'>IBB status</title><content type='html'>I've been meaning to write my report earlier, but I thought I would be finish with IBB by monday. At that point I had successfully transfered files over IBB doing a transport-replace.&lt;br /&gt;&lt;br /&gt;The thing was that I was forcing Gajim to do a transport-replace right after the jingle session initiates. That was good for testing, but in the real world scenario, transport-replace would only come after Gajim recieves the following stanza:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;&lt;span class="tag"&gt;&amp;lt;iq&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;from&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'target@example.org/bar'&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="atn"&gt;id&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'hu3vax16'&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="atn"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'requester@example.com/foo'&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="atn"&gt;type&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'error'&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;error&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="atn"&gt;type&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'cancel'&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;item-not-found&lt;/span&gt;&lt;span class="pln"&gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="atn"&gt;xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="atv"&gt;'urn:ietf:params:xml:ns:xmpp-stanzas'&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/error&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/iq&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I encountered an array of minor problems related to the JingleFT branch, that have prevented me from successfully test for the IBB fallback. Hopefully they will be sorted out by the end of this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-6802276565115221897?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/6802276565115221897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/06/ibb-status.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6802276565115221897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6802276565115221897'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/06/ibb-status.html' title='IBB status'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-5172181662364576564</id><published>2011-06-20T15:43:00.000-07:00</published><updated>2011-06-20T15:43:44.504-07:00</updated><title type='text'>wiki ready</title><content type='html'>The wiki for Stream Management can be found &lt;a href="http://trac.gajim.org/wiki/StreamManagement"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-5172181662364576564?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/5172181662364576564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/06/wiki-ready.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5172181662364576564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5172181662364576564'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/06/wiki-ready.html' title='wiki ready'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-6437367623729312555</id><published>2011-06-15T19:08:00.000-07:00</published><updated>2011-06-15T19:12:36.906-07:00</updated><title type='text'>Resumption is working</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-a40b5ad620c4f339" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://redirector.googlevideo.com/videoplayback?id%3Da40b5ad620c4f339%26itag%3D5%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1340444242%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7EF43F69DF072763F5C9E91A0D12AA4EE12DED03.29B14FF82D66D59BC3572A0C4C30E3FC8A1E4764%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Da40b5ad620c4f339%26offsetms%3D5000%26itag%3Dw160%26sigh%3D43hUU5d4qV_XLe_D1rkC_1xyPf8&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash" width="320" height="266" bgcolor="#FFFFFF" flashvars="flvurl=http://redirector.googlevideo.com/videoplayback?id%3Da40b5ad620c4f339%26itag%3D5%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1340444242%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7EF43F69DF072763F5C9E91A0D12AA4EE12DED03.29B14FF82D66D59BC3572A0C4C30E3FC8A1E4764%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Da40b5ad620c4f339%26offsetms%3D5000%26itag%3Dw160%26sigh%3D43hUU5d4qV_XLe_D1rkC_1xyPf8&amp;autoplay=0&amp;ps=blogger" allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;That's a video with stream management resumption working. To tell what is going on, you need to put it in full screen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All left to do is to test and then write some documentation on it.&lt;br /&gt;&lt;br /&gt;Here's the diagram for the smacks class.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3jK9ZzYEZH4/TfllLDUL1vI/AAAAAAAABto/SvTv6hs4vYg/s1600/smacks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://4.bp.blogspot.com/-3jK9ZzYEZH4/TfllLDUL1vI/AAAAAAAABto/SvTv6hs4vYg/s320/smacks.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will give a more detailed information about resumption in the wiki, and hopefully by next week I'll be implementing the jingle FT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-6437367623729312555?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/6437367623729312555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/06/resuming-is-working.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6437367623729312555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/6437367623729312555'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/06/resuming-is-working.html' title='Resumption is working'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3jK9ZzYEZH4/TfllLDUL1vI/AAAAAAAABto/SvTv6hs4vYg/s72-c/smacks.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-7344863228146703025</id><published>2011-06-04T20:27:00.000-07:00</published><updated>2011-06-11T16:24:38.728-07:00</updated><title type='text'>Starting to implement</title><content type='html'>So, Gajim can basically send and request acks to a server. I haven't through fully tested it, but I will leave that for latter. Right now I'm focusing on resumption, which is harder because it changes the way Gajim connects to the server if it knows that resumption is accepted by the server.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LbaKnENy-2Y/TfP4EktbTmI/AAAAAAAABtk/rz16N1anFVs/s1600/scren.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="516" src="http://2.bp.blogspot.com/-LbaKnENy-2Y/TfP4EktbTmI/AAAAAAAABtk/rz16N1anFVs/s640/scren.jpeg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;For efficient acking the specification shows this example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;enable&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;S&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;enabled stanzas&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'5'&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;r&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;S&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;a h&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'4'&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;message&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;C&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;r&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;S&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pln"&gt;a h&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'9'&lt;/span&gt;&lt;span class="pun"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Which I find very weird that the server is the one who gets to set the interval in which the requests are sent. Since both, the sever and the client, can send and receive acks at any time, it doesn't makes sense that the server cares or has any say on how often the client sends acks.&lt;br /&gt;&lt;br /&gt;So I made the judgment call to ignore this for now and let Gajim decide when it wants to send acks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-7344863228146703025?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/7344863228146703025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/06/starting-to-implement.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/7344863228146703025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/7344863228146703025'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/06/starting-to-implement.html' title='Starting to implement'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-LbaKnENy-2Y/TfP4EktbTmI/AAAAAAAABtk/rz16N1anFVs/s72-c/scren.jpeg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-5427287689568879778</id><published>2011-05-28T13:42:00.000-07:00</published><updated>2011-05-28T13:42:42.531-07:00</updated><title type='text'>Into the first week</title><content type='html'>So, the first week have been easy (as expected).&amp;nbsp; I got everything done by Wednesday because I had finals. The rest of the week I focused on figuring out how to do the work for my second week.&lt;br /&gt;&lt;br /&gt;What I did basically, is adding the ability to create all kinds of Acks to xmmpy.&lt;br /&gt;&lt;br /&gt;Here's how xmmpy creates regular stanzas: &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1ZKjjvBSD00/TeFbDMun3xI/AAAAAAAABtY/lFMBZFjnRZY/s1600/diagram_sm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-1ZKjjvBSD00/TeFbDMun3xI/AAAAAAAABtY/lFMBZFjnRZY/s1600/diagram_sm.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Node class is in charge of the low level operations needed to make an stanza. The Protocol class has common operations used by the message, presence and IQ stanzas. Acks are different, so they don't need those kind of operations.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-L-so0YJxXFU/TeFbo6mDe1I/AAAAAAAABtc/mX2uFmVRBGQ/s1600/diagram_sm2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://1.bp.blogspot.com/-L-so0YJxXFU/TeFbo6mDe1I/AAAAAAAABtc/mX2uFmVRBGQ/s400/diagram_sm2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So my Acks class inherits from Node.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kmpwp9PsppQ/TeFc-mYYcLI/AAAAAAAABtg/FBd69ozm6Ro/s1600/Diagram1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-kmpwp9PsppQ/TeFc-mYYcLI/AAAAAAAABtg/FBd69ozm6Ro/s1600/Diagram1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I tested it and it builds every Ack that are going to be needed by the client.&lt;br /&gt;&lt;br /&gt;These are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;a &lt;span class="pln"&gt;xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'urn:xmpp:sm:3' &lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;h=''/&amp;gt; &lt;/li&gt;&lt;li&gt;&amp;lt;r&lt;span class="pln"&gt; xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'urn:xmpp:sm:3'&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt; /&amp;gt;&lt;/li&gt;&lt;li&gt;&amp;lt;enable&lt;span class="pln"&gt; xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'urn:xmpp:sm:3'&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt; /&amp;gt;&lt;/li&gt;&lt;li&gt;&amp;lt;enable&lt;span class="pln"&gt; xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'urn:xmpp:sm:3'&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt; resume='true' /&amp;gt;&lt;/li&gt;&lt;li&gt;&amp;lt;resume&lt;span class="pln"&gt; xmlns&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;'urn:xmpp:sm:3'&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt; h='' previd='' /&amp;gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So far so good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-5427287689568879778?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/5427287689568879778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/05/into-first-week.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5427287689568879778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/5427287689568879778'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/05/into-first-week.html' title='Into the first week'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1ZKjjvBSD00/TeFbDMun3xI/AAAAAAAABtY/lFMBZFjnRZY/s72-c/diagram_sm.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-474623074325553428.post-910660870171870414</id><published>2011-05-19T20:26:00.000-07:00</published><updated>2011-05-19T20:26:10.382-07:00</updated><title type='text'>Google Summer Of Code Starts Now!</title><content type='html'>Hi! My name is Jefry Lagrange. I was selected to participate in &lt;a href="http://www.google-melange.com/"&gt;GSOC 2011&lt;/a&gt;. I will be implementing &lt;a href="http://xmpp.org/extensions/xep-0198.html"&gt;Stream Management&lt;/a&gt; in &lt;a href="http://gajim.org/"&gt;Gajim&lt;/a&gt;, and some other goodies.&lt;br /&gt;&lt;br /&gt;Here's my planned scheadule:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 1&lt;br /&gt;--------------------------&lt;br /&gt;&lt;br /&gt;Modify parser to create acks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 2&lt;br /&gt;--------------------------&lt;br /&gt;&lt;br /&gt;Create a class that will send acks, handle incoming acks and keep&lt;br /&gt;track of the acks stanzas that have been handled.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 3&lt;br /&gt;-------------------------&lt;br /&gt;&lt;br /&gt;Analyze the source code, to know which parts should be modified in&lt;br /&gt;order to implement stream management.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 4-5&lt;br /&gt;--------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Begin Stream Management implementation, negotiation, error handling,&lt;br /&gt;stream closure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 6&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;Resumption.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 7&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;Testing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 8&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;Analyze the source code to know where and how file transfer is done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 9&lt;br /&gt;-------------------------------&lt;br /&gt;&lt;br /&gt;Implement IBB fallback.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 10&lt;br /&gt;------------------------------&lt;br /&gt;&lt;br /&gt;Analyze the source code to know where and how the plugin system works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Week 11-12&lt;br /&gt;------------------------------&lt;br /&gt;&lt;br /&gt;Extend the events in the plugin system to include things like outgoing&lt;br /&gt;stanzas, etc..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will update this blog every week's end with a report of my progress.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/474623074325553428-910660870171870414?l=hacklogger.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hacklogger.blogspot.com/feeds/910660870171870414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://hacklogger.blogspot.com/2011/05/google-summer-of-code-starts-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/910660870171870414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/474623074325553428/posts/default/910660870171870414'/><link rel='alternate' type='text/html' href='http://hacklogger.blogspot.com/2011/05/google-summer-of-code-starts-now.html' title='Google Summer Of Code Starts Now!'/><author><name>Jefry Lagrange</name><uri>http://www.blogger.com/profile/10440952221150853218</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-lIgmoF8-N5k/TdXd6_30vPI/AAAAAAAABs4/Vip9rWP05Mw/s220/milhousehouse.png'/></author><thr:total>0</thr:total></entry></feed>
