<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"  xmlns:duser="http://rss.dada.net/ns/dadauser"
               xmlns:dmedia="http://rss.dada.net/ns/dadamedia"
               xmlns:dc="http://purl.org/dc/elements/1.1/"
               xmlns:media="http://search.yahoo.com/mrss/"
               xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	       xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
	       xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"
             >
<channel>
 <title>Erlang Developers Home</title>
 <link>http://erlangdevelopers.splinder.com</link>
 <description>The First Erlang Developers Social Group Ever!</description>
 <language>it</language>
 <pubDate>Sun, 27 Jul 2008 14:15:02 +0200</pubDate>
 <image> <url>http://erlangdevelopers.splinder.com/misc/img/80x27-Spowered.gif</url>
 <link>http://erlangdevelopers.splinder.com</link>
 <title>Splinder</title>
</image>
<item>
 <title>Programming Erlang, Software for A Concurrent World</title>
 <link>http://erlangdevelopers.splinder.com/post/17296208/Programming+Erlang%2C+Software+f</link>
 <description>&lt;p&gt;A copy of &amp;quot;Programming Erlang, Software for A Concurrent World&amp;quot; by Mr. Joe Armstrong just landed in my lucky hands! I can't wait to read&amp;nbsp; and learn from Erlangs'creator :)&lt;br /&gt;
&lt;br /&gt;
I'm writing the introduction:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The World is parallel.&lt;br /&gt;
If we want to write programs that behave as other objects behave in&lt;br /&gt;
the real world, then these programs will have a concurrent structure.&lt;br /&gt;
&lt;br /&gt;
Use a language that was designed for writing concurrent applications,&lt;br /&gt;
and development becomes&amp;nbsp; lot easier.&lt;br /&gt;
&lt;br /&gt;
Erlang programs model how we think and interact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Joe Armstrong&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Programming Erlang, Software for a Concurrent World, Joe Armstrong, Pragmatic Bookshelf, @2007 armstrononsoftware)&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.pragprog.com/titles/jaerlang/programming-erlang" target="_blank"&gt;Programming Erlang, Software for a Concurrent World, The Pragmatic Bookshelf.&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://armstrongonsoftware.blogspot.com/" target="_blank"&gt;Armstrononsoftware, Blogger&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/loretoparisi" &gt;loretoparisi&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/17296208/Programming+Erlang%2C+Software+f#comment" &gt;Commenti (2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/programming+erlang" rel="nofollow"&gt;programming erlang&lt;/a&gt;, &lt;a href="/myblog/tags/joe+armstrong" rel="nofollow"&gt;joe armstrong&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=17296208" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf&amp;title=Programming+Erlang%2C+Software+for+A+Concurrent+World" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf&amp;title=Programming+Erlang%2C+Software+for+A+Concurrent+World" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf&amp;title=Programming+Erlang%2C+Software+for+A+Concurrent+World" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf&amp;t=Programming+Erlang%2C+Software+for+A+Concurrent+World" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F17296208%2FProgramming%2BErlang%252C%2BSoftware%2Bf&amp;title=Programming+Erlang%2C+Software+for+A+Concurrent+World" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Fri, 30 May 2008 11:28:29 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/17296208/Programming+Erlang%2C+Software+f</guid>
<source url="http://erlangdevelopers.splinder.com/post/17296208/Programming+Erlang%2C+Software+f">Programming Erlang, Software for A Concurrent World</source>
<comments>http://erlangdevelopers.splinder.com/post/17296208/Programming+Erlang%2C+Software+f#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/programming_erlang">programming_erlang</category>
<category domain="http://erlangdevelopers.splinder.com/tag/joe_armstrong">joe_armstrong</category>
<duser:profile>http://www.splinder.com/profile/loretoparisi</duser:profile>
<duser:nickname>loretoparisi</duser:nickname>
<dc:creator>loretoparisi</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>Lists arithmetic</title>
 <link>http://erlangdevelopers.splinder.com/post/16848645/Lists+arithmetic</link>
 <description>&lt;p&gt;In Erlang we can use many method to access to lists and tuples, and some of them are very quick and easy.&lt;br /&gt;
With ++ and -- operators you can add and subtract lists, like in the following example:&lt;br /&gt;
&lt;br /&gt;
Thelist=[1,2,3,4,5,6,7,8,9,10],&lt;br /&gt;
Even = lists:filter(fun(E) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  E rem 2 == 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; end,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thelist),&lt;br /&gt;
Odd=Thelist -- Even,&lt;br /&gt;
Newlist = Odd ++ [ one, five ].&lt;br /&gt;
&lt;br /&gt;
So Odd list will contains [1,3,5,7,9], Even list will contains [2,4,6,8,10] and Newlist will contain [1,3,5,7,9,one,five].&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/stefko" &gt;stefko&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16848645/Lists+arithmetic#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/list" rel="nofollow"&gt;list&lt;/a&gt;, &lt;a href="/myblog/tags/erlang" rel="nofollow"&gt;erlang&lt;/a&gt;, &lt;a href="/myblog/tags/arithmetic" rel="nofollow"&gt;arithmetic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16848645" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic&amp;title=Lists+arithmetic" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic&amp;title=Lists+arithmetic" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic&amp;title=Lists+arithmetic" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic&amp;t=Lists+arithmetic" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16848645%2FLists%2Barithmetic&amp;title=Lists+arithmetic" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Wed, 23 Apr 2008 10:20:03 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16848645/Lists+arithmetic</guid>
<source url="http://erlangdevelopers.splinder.com/post/16848645/Lists+arithmetic">Lists arithmetic</source>
<comments>http://erlangdevelopers.splinder.com/post/16848645/Lists+arithmetic#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/list">list</category>
<category domain="http://erlangdevelopers.splinder.com/tag/erlang">erlang</category>
<category domain="http://erlangdevelopers.splinder.com/tag/arithmetic">arithmetic</category>
<duser:profile>http://www.splinder.com/profile/stefko</duser:profile>
<duser:nickname>stefko</duser:nickname>
<dc:creator>stefko</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>XML socket in Flash with Ejebberd 2.0.0</title>
 <link>http://erlangdevelopers.splinder.com/post/16639798/XML+socket+in+Flash+with+Ejebb</link>
 <description>&lt;p&gt;I've recently been involved in the problem of Flash (7.0 and following) XML socket. &lt;br /&gt;
Flash uses a &amp;quot;strange&amp;quot; kind of packet transfer in XML socket so Ejabberd 2.0.0 is not compatible with some Flash version.&lt;br /&gt;
I've seen a patch for Ejabberd 1.1.X versions and I've adapted it to fit with ejabberd 2.0.0.&lt;br /&gt;
Please note that this patch changes configure.ac file, but you must DO NOT run aclocal command.&lt;br /&gt;
At the moment aclocal.m4 file contains some macro that aclocal command will overwrite!&lt;br /&gt;
So please follow these steps to apply this patch to Ejabberd 2.0.0:&lt;br /&gt;
&lt;br /&gt;
patch -p0 &amp;lt;flash-xml-ejabberd-2.0.0.diff&lt;br /&gt;
rm configure&lt;br /&gt;
autoconf&lt;br /&gt;
./configure --enable-flash-hack&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
And you'll be able to use XMPP like this:&lt;br /&gt;
&amp;lt;?xml version='1.0'?&amp;gt;  &amp;lt;flash:stream to='example.net' xmlns='jabber:client'     xmlns:flash='http://www.jabber.com/streams/flash' version='1.0'&amp;gt;&amp;lt;/flash:stream&amp;gt;&lt;br /&gt;
&lt;a href="http://www.webalice.it/loretoparisi/ejabberd/flash-xml-ejabberd-2.0.0.patch" target="_blank"&gt;The patch is available here.&lt;/a&gt;&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/stefko" &gt;stefko&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16639798/XML+socket+in+Flash+with+Ejebb#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/flash" rel="nofollow"&gt;flash&lt;/a&gt;, &lt;a href="/myblog/tags/patch" rel="nofollow"&gt;patch&lt;/a&gt;, &lt;a href="/myblog/tags/ejabberd" rel="nofollow"&gt;ejabberd&lt;/a&gt;, &lt;a href="/myblog/tags/xml+socket" rel="nofollow"&gt;xml socket&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16639798" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb&amp;title=XML+socket+in+Flash+with+Ejebberd+2.0.0" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb&amp;title=XML+socket+in+Flash+with+Ejebberd+2.0.0" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb&amp;title=XML+socket+in+Flash+with+Ejebberd+2.0.0" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb&amp;t=XML+socket+in+Flash+with+Ejebberd+2.0.0" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16639798%2FXML%2Bsocket%2Bin%2BFlash%2Bwith%2BEjebb&amp;title=XML+socket+in+Flash+with+Ejebberd+2.0.0" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Mon, 07 Apr 2008 13:03:02 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16639798/XML+socket+in+Flash+with+Ejebb</guid>
<source url="http://erlangdevelopers.splinder.com/post/16639798/XML+socket+in+Flash+with+Ejebb">XML socket in Flash with Ejebberd 2.0.0</source>
<comments>http://erlangdevelopers.splinder.com/post/16639798/XML+socket+in+Flash+with+Ejebb#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/flash">flash</category>
<category domain="http://erlangdevelopers.splinder.com/tag/patch">patch</category>
<category domain="http://erlangdevelopers.splinder.com/tag/ejabberd">ejabberd</category>
<category domain="http://erlangdevelopers.splinder.com/tag/xml_socket">xml_socket</category>
<duser:profile>http://www.splinder.com/profile/stefko</duser:profile>
<duser:nickname>stefko</duser:nickname>
<dc:creator>stefko</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>Ejabberd 2.0 Cookie Patch</title>
 <link>http://erlangdevelopers.splinder.com/post/16638983/Ejabberd+2.0+Cookie+Patch</link>
 <description>&lt;p&gt;As promised I'm releasing the cookie patch for ejabberd 2.0. The patch is quite simple and takes few minutes to check it out.&lt;br /&gt;
To apply the patch cumulatively, simply do the following&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ejabberd/src/web/ $ patch &amp;lt; $HOME/ejabberd-2.0-cookie.patch&lt;br /&gt;
&lt;br /&gt;
Otherwise you could apply the patch to single files:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ejabberd/src/web/ $ patch ejabberd_http.hrl $HOME/ejabberd_http_hrl.patch&lt;br /&gt;
ejabberd/src/web/ $ patch ejabberd_http.erl $HOME/ejabberd_http_erl.patch &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let me know if you got errors applying this patch.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
&lt;a target="_blank" href="http://www.webalice.it/loretoparisi/ejabberd/ejabberd-2.0-cookie.patch"&gt;ejabberd 2.0 Cumulative Cookie Patch&lt;/a&gt;&lt;br /&gt;
&lt;a target="_blank" href="http://www.webalice.it/loretoparisi/ejabberd/ejabberd_http_erl.patch"&gt;ejabberd_http Source Cookie Patch&lt;/a&gt;&lt;br /&gt;
&lt;a target="_blank" href="http://www.webalice.it/loretoparisi/ejabberd/ejabberd_http_hrl.patch"&gt;ejabberd_http Header Cookie Patch&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/loretoparisi" &gt;loretoparisi&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16638983/Ejabberd+2.0+Cookie+Patch#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/cookie" rel="nofollow"&gt;cookie&lt;/a&gt;, &lt;a href="/myblog/tags/patch" rel="nofollow"&gt;patch&lt;/a&gt;, &lt;a href="/myblog/tags/ejabberd" rel="nofollow"&gt;ejabberd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16638983" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch&amp;title=Ejabberd+2.0+Cookie+Patch" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch&amp;title=Ejabberd+2.0+Cookie+Patch" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch&amp;title=Ejabberd+2.0+Cookie+Patch" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch&amp;t=Ejabberd+2.0+Cookie+Patch" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16638983%2FEjabberd%2B2.0%2BCookie%2BPatch&amp;title=Ejabberd+2.0+Cookie+Patch" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Mon, 07 Apr 2008 11:37:55 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16638983/Ejabberd+2.0+Cookie+Patch</guid>
<source url="http://erlangdevelopers.splinder.com/post/16638983/Ejabberd+2.0+Cookie+Patch">Ejabberd 2.0 Cookie Patch</source>
<comments>http://erlangdevelopers.splinder.com/post/16638983/Ejabberd+2.0+Cookie+Patch#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/cookie">cookie</category>
<category domain="http://erlangdevelopers.splinder.com/tag/patch">patch</category>
<category domain="http://erlangdevelopers.splinder.com/tag/ejabberd">ejabberd</category>
<duser:profile>http://www.splinder.com/profile/loretoparisi</duser:profile>
<duser:nickname>loretoparisi</duser:nickname>
<dc:creator>loretoparisi</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>Add cookie support in ejabberd</title>
 <link>http://erlangdevelopers.splinder.com/post/16609181/Add+cookie+support+in+ejabberd</link>
 <description>&lt;p&gt;To add cookies to HTTP POST/GET requests in ejabberd (1.1.x and 2.x) we have to add some fields in the request headers, setting up the request and state records in ejabberd_http.erl module and its header file ejabberd_http.hrl.&lt;br /&gt;
&lt;br /&gt;
First of all, we will add the field cookie to the record request in ejabberd_http.hrl header file as follows:&lt;br /&gt;
&lt;br /&gt;
-record(request, {method,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = [],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; us,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang = &amp;quot;&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = &amp;quot;&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookie = &amp;quot;&amp;quot;, %% lp: cookie request field&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ip&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).&lt;br /&gt;
&lt;br /&gt;
As you can see we are referring to ejabberd 2.0 (in the request record we have the new field ip for new user info).&lt;br /&gt;
&lt;br /&gt;
Now we will edit the ejabberd_http.erl module, adding the field request_cookie to the record state:&lt;br /&gt;
&lt;br /&gt;
-record(state, {sockmod,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_method,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_version,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_path,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_cookie, %% lp: cookie request field&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_keepalive,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
At this point, we have to pass cookies to handlers, modifying the process_headers and process_request functions:&lt;br /&gt;
&lt;br /&gt;
In the process_header, we will add to the case construct&lt;br /&gt;
&lt;br /&gt;
process_header(State, Data) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SockMod = State#state.sockmod,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Socket = State#state.socket,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; case Data of&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, {http_request, Method, Uri, Version}} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, {http_header, _, 'Authorization', _, Auth}} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State#state{request_auth = parse_auth(Auth)};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, {http_header, _, 'Cookie', _, Cookie}} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %% lp: setting up request header cookie&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State#state{request_cookie = Cookie};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ok, {http_header, _, 'Content-Length', _, SLen}} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&lt;br /&gt;
In the process_request we have to modify the function header as follows:&lt;br /&gt;
&lt;br /&gt;
process_request(#state{request_method = 'GET',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_path = {abs_path, Path},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_auth = Auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_lang = Lang,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_cookie = Cookie, %% lp: cookie request field&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_handlers = RequestHandlers,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sockmod = SockMod,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket = Socket} = State) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request = #request{method = 'GET',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path = LPath,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = LQuery,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth = Auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang = Lang,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookie = Cookie, %% lp: here again :)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ip=IP},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&lt;br /&gt;
and in the next header too:&lt;br /&gt;
&lt;br /&gt;
process_request(#state{request_method = 'POST',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_path = {abs_path, Path},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_auth = Auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_content_length = Len,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_lang = Lang,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_cookie = Cookie, %% lp: cookie&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sockmod = SockMod,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket = Socket,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_handlers = RequestHandlers} = State)&lt;br /&gt;
&amp;nbsp; when is_integer(Len) -&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Request = #request{method = 'POST',&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path = LPath,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = LQuery,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth = Auth,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookie = Cookie, %% lp: cookie the last one ;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = Data,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang = Lang},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case process(RequestHandlers, Request) of&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (...)&lt;br /&gt;
&lt;br /&gt;
Now, we are ready to add the cookie request's field to our modules processing http requests:&lt;br /&gt;
&lt;br /&gt;
process(#request{us = _US,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path = &amp;quot;login&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q = _Query,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang = _Lang,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cookie = _Cookie} = Request) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %% _Cookie will contain the request cookie now&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %% Manage request by cookies&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %% Send response :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I will eventually post a addon patch for this :)&lt;br /&gt;
&lt;br /&gt;
Enjoy your Jabber,&lt;br /&gt;
LP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS. We used ejabberd 2.0, but you can do this in ejabberd 1.1.x in the same way&lt;br /&gt;
&lt;br /&gt;
 Links:&lt;br /&gt;
&lt;a href="http://www.process-one.net/en/wiki/ejabberd_module_development/" target="_blank"&gt;http://www.process-one.net/en/wiki/ejabberd_module_development/&lt;/a&gt;&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/loretoparisi" &gt;loretoparisi&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16609181/Add+cookie+support+in+ejabberd#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/cookie" rel="nofollow"&gt;cookie&lt;/a&gt;, &lt;a href="/myblog/tags/request+headers" rel="nofollow"&gt;request headers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16609181" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd&amp;title=Add+cookie+support+in+ejabberd" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd&amp;title=Add+cookie+support+in+ejabberd" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd&amp;title=Add+cookie+support+in+ejabberd" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd&amp;t=Add+cookie+support+in+ejabberd" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16609181%2FAdd%2Bcookie%2Bsupport%2Bin%2Bejabberd&amp;title=Add+cookie+support+in+ejabberd" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Fri, 04 Apr 2008 18:05:40 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16609181/Add+cookie+support+in+ejabberd</guid>
<source url="http://erlangdevelopers.splinder.com/post/16609181/Add+cookie+support+in+ejabberd">Add cookie support in ejabberd</source>
<comments>http://erlangdevelopers.splinder.com/post/16609181/Add+cookie+support+in+ejabberd#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/cookie">cookie</category>
<category domain="http://erlangdevelopers.splinder.com/tag/request_headers">request_headers</category>
<duser:profile>http://www.splinder.com/profile/loretoparisi</duser:profile>
<duser:nickname>loretoparisi</duser:nickname>
<dc:creator>loretoparisi</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>Logging in ejabberd 1.1.2</title>
 <link>http://erlangdevelopers.splinder.com/post/16564086/Logging+in+ejabberd+1.1.2</link>
 <description>&lt;p&gt;In the previous post &lt;a href="http://www.splinder.com/profile/stefko" target="_blank"&gt;stefko&lt;/a&gt; told us about the new logging facility in ejabberd 2.0. But how can we apply logging verbosity levels in previous releases of ejabberd, such as ejabberd 1.1.2 ?&lt;br /&gt;
Well,&lt;br /&gt;
I modififed the ejabberd.hrl in this way:&lt;br /&gt;
&lt;br /&gt;
%%&lt;br /&gt;
%%&amp;nbsp;&amp;nbsp;&amp;nbsp; --- 2007-05-10 - LP: LOGGER ---&lt;br /&gt;
%% &amp;nbsp;&amp;nbsp;&amp;nbsp; Verbosity levels:&lt;br /&gt;
%%&lt;br /&gt;
%% &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Level 0 - No verbosity&lt;br /&gt;
%%&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Level 1 - Error&lt;br /&gt;
%% &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Level 2 - Warning&lt;br /&gt;
%% &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Level 3 - Info&lt;br /&gt;
%% &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Level 4 - Debug&lt;br /&gt;
%%&lt;br /&gt;
&lt;br /&gt;
%% LP: Logger environment verbosity level variable&lt;br /&gt;
-define(LOGGER_ENV_LEVEL, &amp;quot;EJABBERD_LOGGER_LEVEL&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
%% LP: Default Logger Level to 3 - Info level&lt;br /&gt;
-define(LOGGER_DEFAULTLEVEL, 3).%% LP: Get verbosity level&lt;br /&gt;
&lt;br /&gt;
-define(LOGGER_SETLEVEL(Level),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; case string:to_integer(os:getenv(?LOGGER_ENV_LEVEL)) of&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {_,[]} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case ({Level,[]} =&amp;lt; string:to_integer(os:getenv(?LOGGER_ENV_LEVEL))) of &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; true -&amp;gt; Level;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; false -&amp;gt; string:to_integer(os:getenv(?LOGGER_ENV_LEVEL))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?LOGGER_DEFAULTLEVEL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end).&lt;br /&gt;
&lt;br /&gt;
%% LP: Log messages&lt;br /&gt;
-define(LOGGER_LOG(Format, Args, Level),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; %% switch verbosity against level&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; case Level of&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0 -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% NO VERBOSITY&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ok;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% ERROR LEVEL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error_logger:error_msg(&amp;quot;ERROR(~p:~p:~p): &amp;quot;++Format++&amp;quot;~n&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [self(),?MODULE,?LINE]++Args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2 -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% WARNING LEVEL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error_logger:warning_msg(&amp;quot;WARN(~p:~p:~p): &amp;quot;++Format++&amp;quot;~n&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [self(),?MODULE,?LINE]++Args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3 -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% INFO_MSG LEVEL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error_logger:info_msg(&amp;quot;INFO(~p:~p:~p): &amp;quot;++Format++&amp;quot;~n&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [self(),?MODULE,?LINE]++Args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4 -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% DEBUG LEVEL - no custom file logger&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_logger:info_msg(&amp;quot;DEBUG(~p:~p:~p) : &amp;quot;++Format++&amp;quot;~n&amp;quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [self(),?MODULE,?LINE]++Args);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _ -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; %% UNDEFINED LEVEL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ok&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then redifining the ?DEBUG, ?INFO_MSG, ?WARNING_MSG and ?ERROR_MSG with the new ?LOGGER_LOG define and adjusting the logger level with ?LOGGER_SETLEVEL(Value), whereas Value goes from 0 (no messages) to 4 (debug mode) as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% LP: Debug Message&lt;br /&gt;
-define(DEBUG(Format, Args), ?LOGGER_LOG(Format, Args, ?LOGGER_SETLEVEL(4))).&lt;br /&gt;
&lt;br /&gt;
%% LP: Info Message&lt;br /&gt;
-define(INFO_MSG(Format, Args), ?LOGGER_LOG(Format, Args, ?LOGGER_SETLEVEL(3))).&lt;br /&gt;
&lt;br /&gt;
%% LP: Warning Message&lt;br /&gt;
-define(WARNING_MSG(Format, Args), ?LOGGER_LOG(Format, Args, ?LOGGER_SETLEVEL(2))).&lt;br /&gt;
&lt;br /&gt;
%% LP: Error Message&lt;br /&gt;
-define(ERROR_MSG(Format, Args), ?LOGGER_LOG(Format, Args, ?LOGGER_SETLEVEL(1))).&lt;br /&gt;
&lt;br /&gt;
In this way it's possible to log errors, warnings, messages using the same code (no need to change other modules log instructions) by setting up the environment variable &amp;quot;EJABBERD_LOGGER_LEVEL&amp;quot;, called by os:getenv in the erl shell command:&lt;br /&gt;
&lt;br /&gt;
erl ... -env ERL_MAX_PORTS 32000 \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -env EJABBERD_LOGGER_LEVEL 4 \&lt;br /&gt;
&lt;br /&gt;
LP&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/loretoparisi" &gt;loretoparisi&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16564086/Logging+in+ejabberd+1.1.2#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/debug" rel="nofollow"&gt;debug&lt;/a&gt;, &lt;a href="/myblog/tags/loglevel" rel="nofollow"&gt;loglevel&lt;/a&gt;, &lt;a href="/myblog/tags/verbosity" rel="nofollow"&gt;verbosity&lt;/a&gt;, &lt;a href="/myblog/tags/logger" rel="nofollow"&gt;logger&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16564086" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2&amp;title=Logging+in+ejabberd+1.1.2" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2&amp;title=Logging+in+ejabberd+1.1.2" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2&amp;title=Logging+in+ejabberd+1.1.2" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2&amp;t=Logging+in+ejabberd+1.1.2" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16564086%2FLogging%2Bin%2Bejabberd%2B1.1.2&amp;title=Logging+in+ejabberd+1.1.2" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Tue, 01 Apr 2008 13:04:14 +0200</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16564086/Logging+in+ejabberd+1.1.2</guid>
<source url="http://erlangdevelopers.splinder.com/post/16564086/Logging+in+ejabberd+1.1.2">Logging in ejabberd 1.1.2</source>
<comments>http://erlangdevelopers.splinder.com/post/16564086/Logging+in+ejabberd+1.1.2#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/debug">debug</category>
<category domain="http://erlangdevelopers.splinder.com/tag/loglevel">loglevel</category>
<category domain="http://erlangdevelopers.splinder.com/tag/verbosity">verbosity</category>
<category domain="http://erlangdevelopers.splinder.com/tag/logger">logger</category>
<duser:profile>http://www.splinder.com/profile/loretoparisi</duser:profile>
<duser:nickname>loretoparisi</duser:nickname>
<dc:creator>loretoparisi</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>Dynamic verbosity level change in ejabberd 2.0.0</title>
 <link>http://erlangdevelopers.splinder.com/post/16486007/Dynamic+verbosity+level+change</link>
 <description>&lt;p&gt;There's a very useful method to dynamically change verbosity level in ejabberd 2.0.0.&lt;br /&gt;
You must connect with a remote shell to the node you're interested to debug and simply write:&lt;br /&gt;
&lt;br /&gt;
ejabberd_loglevel:set(LogLevel).&lt;br /&gt;
&lt;br /&gt;
Where LogLevel is:&lt;br /&gt;
&lt;br /&gt;
    0: No ejabberd log at all (not recommended)&lt;br /&gt;
    1: Critical&lt;br /&gt;
    2: Error&lt;br /&gt;
    3: Warning&lt;br /&gt;
    4: Info&lt;br /&gt;
    5: Debug&lt;br /&gt;
&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/stefko" &gt;stefko&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16486007/Dynamic+verbosity+level+change#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/debug" rel="nofollow"&gt;debug&lt;/a&gt;, &lt;a href="/myblog/tags/ejabberd" rel="nofollow"&gt;ejabberd&lt;/a&gt;, &lt;a href="/myblog/tags/concurrent+programming" rel="nofollow"&gt;concurrent programming&lt;/a&gt;, &lt;a href="/myblog/tags/loglevel" rel="nofollow"&gt;loglevel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16486007" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange&amp;title=Dynamic+verbosity+level+change+in+ejabberd+2.0.0" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange&amp;title=Dynamic+verbosity+level+change+in+ejabberd+2.0.0" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange&amp;title=Dynamic+verbosity+level+change+in+ejabberd+2.0.0" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange&amp;t=Dynamic+verbosity+level+change+in+ejabberd+2.0.0" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16486007%2FDynamic%2Bverbosity%2Blevel%2Bchange&amp;title=Dynamic+verbosity+level+change+in+ejabberd+2.0.0" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Wed, 26 Mar 2008 11:46:15 +0100</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16486007/Dynamic+verbosity+level+change</guid>
<source url="http://erlangdevelopers.splinder.com/post/16486007/Dynamic+verbosity+level+change">Dynamic verbosity level change in ejabberd 2.0.0</source>
<comments>http://erlangdevelopers.splinder.com/post/16486007/Dynamic+verbosity+level+change#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/debug">debug</category>
<category domain="http://erlangdevelopers.splinder.com/tag/ejabberd">ejabberd</category>
<category domain="http://erlangdevelopers.splinder.com/tag/concurrent_programming">concurrent_programming</category>
<category domain="http://erlangdevelopers.splinder.com/tag/loglevel">loglevel</category>
<duser:profile>http://www.splinder.com/profile/stefko</duser:profile>
<duser:nickname>stefko</duser:nickname>
<dc:creator>stefko</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>STDLIB: List To Record (revisited)</title>
 <link>http://erlangdevelopers.splinder.com/post/16369595/STDLIB%3A+List+To+Record+%28revisi</link>
 <description>&lt;p&gt;In a previous post,&amp;nbsp; &lt;a href="http://erlangdevelopers.splinder.com/post/16147279/STDLIB%3A+List+To+Record" target="_blank"&gt;STDLIB: List To Record&lt;/a&gt;, we looked at a way to convert a list to a record by means of matching record fields. We made use of lists:mapfoldl and setelement lists and tuples's functions. That was just an exercise to practise with lists fun.&lt;br /&gt;
Now we'll a see a better way to implement this function that make more sense, using built-in function list_to_tuple and doing exactly the same job.&lt;br /&gt;
&lt;br /&gt;
list_to_record(Query)-&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fields=record_info(fields,qs),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; QS=#qs{},&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Record=lists:map(fun(Key) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BKey=atom_to_list(Key),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Vl=case catch lists:keysearch(BKey,1,Query) of&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {value,VKey} -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {K,V}=VKey,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false -&amp;gt;&amp;nbsp; undefined;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {'EXIT',Reason} -&amp;gt; undefined&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end,Fields),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list_to_tuple(lists:merge([qs],Record)).&lt;br /&gt;
&lt;br /&gt;
That's all,&lt;br /&gt;
LP&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/loretoparisi" &gt;loretoparisi&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16369595/STDLIB%3A+List+To+Record+%28revisi#comment" &gt;Commenti&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/record" rel="nofollow"&gt;record&lt;/a&gt;, &lt;a href="/myblog/tags/list" rel="nofollow"&gt;list&lt;/a&gt;, &lt;a href="/myblog/tags/erlang" rel="nofollow"&gt;erlang&lt;/a&gt;, &lt;a href="/myblog/tags/stdlib" rel="nofollow"&gt;stdlib&lt;/a&gt;, &lt;a href="/myblog/tags/mapfoldl" rel="nofollow"&gt;mapfoldl&lt;/a&gt;, &lt;a href="/myblog/tags/tuple" rel="nofollow"&gt;tuple&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16369595" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi&amp;title=STDLIB%3A+List+To+Record+%28revisited%29" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi&amp;title=STDLIB%3A+List+To+Record+%28revisited%29" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi&amp;title=STDLIB%3A+List+To+Record+%28revisited%29" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi&amp;t=STDLIB%3A+List+To+Record+%28revisited%29" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16369595%2FSTDLIB%253A%2BList%2BTo%2BRecord%2B%2528revisi&amp;title=STDLIB%3A+List+To+Record+%28revisited%29" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Mon, 17 Mar 2008 10:13:43 +0100</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16369595/STDLIB%3A+List+To+Record+%28revisi</guid>
<source url="http://erlangdevelopers.splinder.com/post/16369595/STDLIB%3A+List+To+Record+%28revisi">STDLIB: List To Record (revisited)</source>
<comments>http://erlangdevelopers.splinder.com/post/16369595/STDLIB%3A+List+To+Record+%28revisi#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/record">record</category>
<category domain="http://erlangdevelopers.splinder.com/tag/list">list</category>
<category domain="http://erlangdevelopers.splinder.com/tag/erlang">erlang</category>
<category domain="http://erlangdevelopers.splinder.com/tag/stdlib">stdlib</category>
<category domain="http://erlangdevelopers.splinder.com/tag/mapfoldl">mapfoldl</category>
<category domain="http://erlangdevelopers.splinder.com/tag/tuple">tuple</category>
<duser:profile>http://www.splinder.com/profile/loretoparisi</duser:profile>
<duser:nickname>loretoparisi</duser:nickname>
<dc:creator>loretoparisi</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>A little help for clustering ejabberd</title>
 <link>http://erlangdevelopers.splinder.com/post/16338302/A+little+help+for+clustering+e</link>
 <description>&lt;p&gt;If you need to quickly make a cluster for many ejabberd nodes, you can find that a module that quickly initialize Mnesia tables can be very useful.&lt;br /&gt;
Follows the code of this module, really simple and autoexplicative.&lt;br /&gt;
&lt;br /&gt;
-module(set_cluster_tables).&lt;br /&gt;
&lt;br /&gt;
-export([&lt;br /&gt;
&amp;nbsp; setCopyTable/1&lt;br /&gt;
&amp;nbsp; ]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loopTables(List, Dest, Node) -&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; lists:foreach(fun(Table) -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; io:format(&amp;quot;Change table copy for ~p in ~p\n&amp;quot;,[Table,Dest]),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; mnesia:add_table_copy(Table, Node, Dest)&lt;br /&gt;
&amp;nbsp; end,List).&lt;br /&gt;
&lt;br /&gt;
setCopyTable() -&amp;gt;&lt;br /&gt;
&amp;nbsp; io:format(&amp;quot;Adding schema table\n&amp;quot;,[]),&lt;br /&gt;
&amp;nbsp; mnesia:change_table_copy_type(schema, node(), disc_copies),&lt;br /&gt;
&amp;nbsp; TablesInRAM=[session,s2s,route,acl],&lt;br /&gt;
&amp;nbsp; TablesInDisc=[muc_registered,muc_room,motd,last_activity,roster,passwd,privacy&lt;br /&gt;
,offline_msg,disco_publish,vcard,private_storage,pubsub_node],&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; loopTables(TablesInRAM,ram_copies,node()),&lt;br /&gt;
&amp;nbsp; loopTables(TablesInDisc,disc_only_copies,node()).&lt;br /&gt;
&lt;br /&gt;
So calling set_cluster_tables:setCopyTable(). you will have all specified tables copied from &amp;quot;master&amp;quot; node. Remember to exit using q(). or init:stop() command, to cleanly exit from the shell.&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/stefko" &gt;stefko&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16338302/A+little+help+for+clustering+e#comment" &gt;Commenti (2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;Tags: &lt;a href="/myblog/tags/erlang" rel="nofollow"&gt;erlang&lt;/a&gt;, &lt;a href="/myblog/tags/clustering" rel="nofollow"&gt;clustering&lt;/a&gt;, &lt;a href="/myblog/tags/mnesia" rel="nofollow"&gt;mnesia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16338302" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be&amp;title=A+little+help+for+clustering+ejabberd" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be&amp;title=A+little+help+for+clustering+ejabberd" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be&amp;title=A+little+help+for+clustering+ejabberd" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be&amp;t=A+little+help+for+clustering+ejabberd" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16338302%2FA%2Blittle%2Bhelp%2Bfor%2Bclustering%2Be&amp;title=A+little+help+for+clustering+ejabberd" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Fri, 14 Mar 2008 15:18:52 +0100</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16338302/A+little+help+for+clustering+e</guid>
<source url="http://erlangdevelopers.splinder.com/post/16338302/A+little+help+for+clustering+e">A little help for clustering ejabberd</source>
<comments>http://erlangdevelopers.splinder.com/post/16338302/A+little+help+for+clustering+e#comment</comments>
<category domain="http://erlangdevelopers.splinder.com/tag/erlang">erlang</category>
<category domain="http://erlangdevelopers.splinder.com/tag/clustering">clustering</category>
<category domain="http://erlangdevelopers.splinder.com/tag/mnesia">mnesia</category>
<duser:profile>http://www.splinder.com/profile/stefko</duser:profile>
<duser:nickname>stefko</duser:nickname>
<dc:creator>stefko</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
<item>
 <title>One line patch to ejabberd 2.0.0</title>
 <link>http://erlangdevelopers.splinder.com/post/16310710/One+line+patch+to+ejabberd+2.0</link>
 <description>&lt;p&gt;In these days I'm using ejabberd 2.0.0, and I'm making a new module to set IM presences on Splinder site. &lt;br /&gt;
The &lt;br /&gt;
I've seen that the hook call c2s_update_presence in ejabberd_c2s module, is not using resource part of user's jid.&lt;br /&gt;
After a short discussion in the &lt;a href="http://www.ejabberd.im/chatroom" target="_blank"&gt;ejabberd developer chatroom&lt;/a&gt;, and after a little talk with &lt;a href="http://www.ejabberd.im/user/1" target="_blank"&gt;badlop&lt;/a&gt;, we have decided to patch che ejabberd_c2s code.&lt;br /&gt;
I think it may be useful to use resource too, so I've patched session_established function, from:&lt;br /&gt;
&lt;br /&gt;
PresenceEl = ejabberd_hooks:run_fold(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2s_update_presence,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewEl,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [User, Server]),&lt;br /&gt;
to:&lt;br /&gt;
&lt;br /&gt;
PresenceEl = ejabberd_hooks:run_fold(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c2s_update_presence,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewEl,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [User, Server, StateData#state.resource]),&lt;br /&gt;
&lt;br /&gt;
So the code executing the hook can be independent from jid record but can use values inside this type of variable.&lt;br /&gt;
You can follow the story about this patch &lt;a target="_blank" href="https://support.process-one.net/browse/EJAB-559"&gt;here&lt;/a&gt;.&lt;/p&gt;Pubblicato da &lt;a href="http://www.splinder.com/profile/stefko" &gt;stefko&lt;/a&gt; | &lt;a href="http://erlangdevelopers.splinder.com/post/16310710/One+line+patch+to+ejabberd+2.0#comment" &gt;Commenti (1)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.splinder.com/blogthis?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0" title="Cita il post nel tuo blog" rel="nofollow" class="image" &gt;&lt;img src="http://www.splinder.com/modules/service_links/blogthis.png" alt="Cita il post nel tuo blog" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.splinder.com/community/contacts/invite?nid=16310710" title="Segnala il post" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/emailthis.png" alt="Segnala il post" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0&amp;title=One+line+patch+to+ejabberd+2.0.0" title="Aggiungi su del.icio.us" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/delicious.png" alt="Aggiungi su del.icio.us" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0&amp;title=One+line+patch+to+ejabberd+2.0.0" title="Aggiungi su digg.com" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/digg.png" alt="Aggiungi su digg.com" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0&amp;title=One+line+patch+to+ejabberd+2.0.0" title="Aggiungi su Google" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/google.png" alt="Aggiungi su Google" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0&amp;t=One+line+patch+to+ejabberd+2.0.0" title="Aggiungi su Yahoo" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/yahoo.png" alt="Aggiungi su Yahoo" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technorati.com/faves?add=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0" title="Aggiungi su Technorati" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/technorati.png" alt="Aggiungi su Technorati" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.badzu.net/submit?action=it&amp;link=http%3A%2F%2Ferlangdevelopers.splinder.com%2Fpost%2F16310710%2FOne%2Bline%2Bpatch%2Bto%2Bejabberd%2B2.0&amp;title=One+line+patch+to+ejabberd+2.0.0" title="Aggiungi su Badzu" rel="nofollow" class="image" target="_blank"&gt;&lt;img src="http://www.splinder.com/modules/service_links/badzu.png" alt="Aggiungi su Badzu" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;</description>
<pubDate>Wed, 12 Mar 2008 15:11:37 +0100</pubDate>
<guid isPermaLink="true">http://erlangdevelopers.splinder.com/post/16310710/One+line+patch+to+ejabberd+2.0</guid>
<source url="http://erlangdevelopers.splinder.com/post/16310710/One+line+patch+to+ejabberd+2.0">One line patch to ejabberd 2.0.0</source>
<comments>http://erlangdevelopers.splinder.com/post/16310710/One+line+patch+to+ejabberd+2.0#comment</comments>
<duser:profile>http://www.splinder.com/profile/stefko</duser:profile>
<duser:nickname>stefko</duser:nickname>
<dc:creator>stefko</dc:creator>
<dc:publisher>Erlang Developers Home</dc:publisher>
</item>
</channel>
</rss>
