aboutsummaryrefslogtreecommitdiff
path: root/cvs/cvsweb.cgi/code/nel/src/net
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
committerneodarz <neodarz@neodarz.net>2018-08-11 20:21:34 +0200
commit0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch)
tree2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /cvs/cvsweb.cgi/code/nel/src/net
downloadnevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz
nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip
Initial commit
Diffstat (limited to 'cvs/cvsweb.cgi/code/nel/src/net')
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=author/index.html302
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=date/index.html302
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=rev/index.html302
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?sortby=date/index.html219
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?sortby=log/index.html219
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/?sortby=rev/index.html219
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/CVS/?sortby=date/index.html75
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?sortby=date333
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?sortby=date296
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?rev=1.32&content-type=text/x-cvsweb-markup&sortby=date/index.html1083
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?sortby=date456
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?sortby=date406
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?sortby=date379
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?rev=1.33&content-type=text/x-cvsweb-markup&sortby=date/index.html556
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?sortby=date469
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?sortby=date359
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?rev=1.38&content-type=text/x-cvsweb-markup&sortby=date/index.html452
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?sortby=date533
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?sortby=date196
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?sortby=date276
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?sortby=date166
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?rev=1.16&content-type=text/x-cvsweb-markup&sortby=date/index.html506
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?sortby=date296
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/message.cpp?rev=1.21&content-type=text/x-cvsweb-markup&sortby=date/index.html343
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?sortby=date196
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/naming_client.cpp?rev=1.48&content-type=text/x-cvsweb-markup&sortby=date/index.html569
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?sortby=date356
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/service.cpp?rev=1.136&content-type=text/x-cvsweb-markup&sortby=date/index.html1475
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/stdnet.cpp?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html15
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?sortby=date206
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?rev=1.12&content-type=text/x-cvsweb-markup&sortby=date/index.html414
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?sortby=date251
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?rev=1.11&content-type=text/x-cvsweb-markup&sortby=date/index.html220
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?sortby=date246
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?sortby=date570
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?rev=1.31&content-type=text/x-cvsweb-markup&sortby=date/index.html397
-rw-r--r--cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?sortby=date461
37 files changed, 14119 insertions, 0 deletions
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=author/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=author/index.html
new file mode 100644
index 00000000..44f1a3b1
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=author/index.html
@@ -0,0 +1,302 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?hideattic=0&amp;sortby=author">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?hideattic=0&amp;sortby=author">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?hideattic=0&amp;sortby=author">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?hideattic=0&amp;sortby=author">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#222222"><font color=white>Author</font></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?hideattic=0&amp;sortby=author">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="CVS"></A><A HREF="CVS/?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?hideattic=0&amp;sortby=author">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?hideattic=0&amp;sortby=author">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?hideattic=0&amp;sortby=author">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Jamfile"></A><A HREF="Jamfile?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?hideattic=0&amp;sortby=author">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="base_socket.cpp"></A><A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=author">base_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/base_socket.cpp?rev=1.49&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.49</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?hideattic=0&amp;sortby=author">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.16</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=author">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?hideattic=0&amp;sortby=author">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.32</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?hideattic=0&amp;sortby=author">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.27</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?hideattic=0&amp;sortby=author">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.24</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=author">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.33</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?hideattic=0&amp;sortby=author">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="cubic_entity_interpolator.cpp"></A><A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=author">cubic_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/cubic_entity_interpolator.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.11</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="datagram_socket.cpp"></A><A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=author">datagram_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/datagram_socket.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.7</b></A></td><td>&nbsp; <i>21 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Layer1 = CBaseSocket,
+Layer2 = CSocket,
+Layer 3 = CMsgSocket ;
+Removed CDatagram...</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=author">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?hideattic=0&amp;sortby=author">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.38</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="linear_entity_interpolator.cpp"></A><A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=author">linear_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/linear_entity_interpolator.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?hideattic=0&amp;sortby=author">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="local_area.cpp"></A><A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=author">local_area.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_area.cpp?rev=1.40&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.40</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="local_entity.cpp"></A><A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=author">local_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_entity.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.26</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?hideattic=0&amp;sortby=author">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?hideattic=0&amp;sortby=author">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.3</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?hideattic=0&amp;sortby=author">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.16</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message.cpp"></A><A HREF="message.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?hideattic=0&amp;sortby=author">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.21</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?hideattic=0&amp;sortby=author">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="moving_entity.cpp"></A><A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=author">moving_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/moving_entity.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.14</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_client.cpp"></A><A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=author">msg_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_net_base.cpp"></A><A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=author">msg_net_base.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_net_base.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_server.cpp"></A><A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=author">msg_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_socket.cpp"></A><A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=author">msg_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_socket.cpp?rev=1.59&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.59</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?hideattic=0&amp;sortby=author">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.48</b></A></td><td>&nbsp; <i>10 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?hideattic=0&amp;sortby=author">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.21</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?hideattic=0&amp;sortby=author">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.12</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?hideattic=0&amp;sortby=author">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="network.dsp"></A><A HREF="Attic/network.dsp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/network.dsp?hideattic=0&amp;sortby=author">network.dsp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/network.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>22 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Changed some .dsp names
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="new_message.cpp"></A><A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=author">new_message.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_message.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.2</b></A></td><td>&nbsp; <i>16 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="new_service.cpp"></A><A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=author">new_service.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.12</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="pt_callback_item.cpp"></A><A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=author">pt_callback_item.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/pt_callback_item.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.4</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="remote_entity.cpp"></A><A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=author">remote_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/remote_entity.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.17</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="replica.cpp"></A><A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=author">replica.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/replica.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.6</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="service.cpp"></A><A HREF="service.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?hideattic=0&amp;sortby=author">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.137&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.137</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: lot of debug info to know why a service quit
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="service_5.cpp"></A><A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=author">service_5.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/service_5.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.24</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: merge service_5 and add args management
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?hideattic=0&amp;sortby=author">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.21</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="socket.cpp"></A><A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=author">socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/socket.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.44</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?hideattic=0&amp;sortby=author">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?hideattic=0&amp;sortby=author">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stream_client.cpp"></A><A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=author">stream_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stream_server.cpp"></A><A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=author">stream_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=author#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=author">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?hideattic=0&amp;sortby=author">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.44</b></A></td><td>&nbsp; <i>2 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: stop check if the fucking assert occurs
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?hideattic=0&amp;sortby=author">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.31</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?hideattic=0&amp;sortby=author"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?hideattic=0&amp;sortby=author">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=author"><b>1.12</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="hideattic" VALUE="0">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="author">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=date/index.html
new file mode 100644
index 00000000..5ba22406
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=date/index.html
@@ -0,0 +1,302 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?hideattic=0&amp;sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?hideattic=0&amp;sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?hideattic=0&amp;sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?hideattic=0&amp;sortby=date">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#222222"><font color=white>Age</font></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?hideattic=0&amp;sortby=date">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="CVS"></A><A HREF="CVS/?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?hideattic=0&amp;sortby=date">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="base_socket.cpp"></A><A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=date">base_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/base_socket.cpp?rev=1.49&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.49</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="cubic_entity_interpolator.cpp"></A><A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=date">cubic_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/cubic_entity_interpolator.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.11</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="datagram_socket.cpp"></A><A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=date">datagram_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/datagram_socket.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.7</b></A></td><td>&nbsp; <i>21 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Layer1 = CBaseSocket,
+Layer2 = CSocket,
+Layer 3 = CMsgSocket ;
+Removed CDatagram...</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?hideattic=0&amp;sortby=date">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.44</b></A></td><td>&nbsp; <i>2 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: stop check if the fucking assert occurs
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="service.cpp"></A><A HREF="service.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?hideattic=0&amp;sortby=date">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.137&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.137</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: lot of debug info to know why a service quit
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?hideattic=0&amp;sortby=date">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.48</b></A></td><td>&nbsp; <i>10 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message.cpp"></A><A HREF="message.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?hideattic=0&amp;sortby=date">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?hideattic=0&amp;sortby=date">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.12</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?hideattic=0&amp;sortby=date">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.16</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?hideattic=0&amp;sortby=date">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.32</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?hideattic=0&amp;sortby=date">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.27</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?hideattic=0&amp;sortby=date">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?hideattic=0&amp;sortby=date">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.24</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=date">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.33</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?hideattic=0&amp;sortby=date">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?hideattic=0&amp;sortby=date">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?hideattic=0&amp;sortby=date">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?hideattic=0&amp;sortby=date">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?hideattic=0&amp;sortby=date">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?hideattic=0&amp;sortby=date">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?hideattic=0&amp;sortby=date">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.16</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?hideattic=0&amp;sortby=date">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=date">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Jamfile"></A><A HREF="Jamfile?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?hideattic=0&amp;sortby=date">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?hideattic=0&amp;sortby=date">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?hideattic=0&amp;sortby=date">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=date">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?hideattic=0&amp;sortby=date">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.38</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="linear_entity_interpolator.cpp"></A><A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=date">linear_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/linear_entity_interpolator.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="local_entity.cpp"></A><A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=date">local_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_entity.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.26</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?hideattic=0&amp;sortby=date">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.3</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=date">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="local_area.cpp"></A><A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=date">local_area.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_area.cpp?rev=1.40&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.40</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="moving_entity.cpp"></A><A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=date">moving_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/moving_entity.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.14</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_client.cpp"></A><A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=date">msg_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_net_base.cpp"></A><A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=date">msg_net_base.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_net_base.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_server.cpp"></A><A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=date">msg_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_socket.cpp"></A><A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=date">msg_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_socket.cpp?rev=1.59&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.59</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?hideattic=0&amp;sortby=date">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?hideattic=0&amp;sortby=date">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.12</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="network.dsp"></A><A HREF="Attic/network.dsp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/network.dsp?hideattic=0&amp;sortby=date">network.dsp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/network.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>22 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Changed some .dsp names
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="new_message.cpp"></A><A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=date">new_message.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_message.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.2</b></A></td><td>&nbsp; <i>16 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="new_service.cpp"></A><A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=date">new_service.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.12</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="pt_callback_item.cpp"></A><A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=date">pt_callback_item.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/pt_callback_item.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.4</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="remote_entity.cpp"></A><A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=date">remote_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/remote_entity.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.17</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="replica.cpp"></A><A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=date">replica.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/replica.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.6</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="service_5.cpp"></A><A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=date">service_5.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/service_5.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.24</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: merge service_5 and add args management
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="socket.cpp"></A><A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=date">socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/socket.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.44</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stream_client.cpp"></A><A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=date">stream_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stream_server.cpp"></A><A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=date">stream_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=date#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?hideattic=0&amp;sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?hideattic=0&amp;sortby=date">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=date"><b>1.31</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="hideattic" VALUE="0">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=rev/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=rev/index.html
new file mode 100644
index 00000000..7d7bb140
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?hideattic=0&sortby=rev/index.html
@@ -0,0 +1,302 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?hideattic=0&amp;sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?hideattic=0&amp;sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?hideattic=0&amp;sortby=rev">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?hideattic=0&amp;sortby=rev">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0"><font color=white>File</font></a></th><th align=left bgcolor="#222222"><font color=white>Rev.</font></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?hideattic=0&amp;sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?hideattic=0&amp;sortby=rev">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="CVS"></A><A HREF="CVS/?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?hideattic=0&amp;sortby=rev">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="base_socket.cpp"></A><A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/base_socket.cpp?hideattic=0&amp;sortby=rev">base_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/base_socket.cpp?rev=1.49&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.49</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="cubic_entity_interpolator.cpp"></A><A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/cubic_entity_interpolator.cpp?hideattic=0&amp;sortby=rev">cubic_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/cubic_entity_interpolator.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.11</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="datagram_socket.cpp"></A><A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/datagram_socket.cpp?hideattic=0&amp;sortby=rev">datagram_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/datagram_socket.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.7</b></A></td><td>&nbsp; <i>21 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Layer1 = CBaseSocket,
+Layer2 = CSocket,
+Layer 3 = CMsgSocket ;
+Removed CDatagram...</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?hideattic=0&amp;sortby=rev">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.38</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?hideattic=0&amp;sortby=rev">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.33</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?hideattic=0&amp;sortby=rev">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.32</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?hideattic=0&amp;sortby=rev">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.27</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?hideattic=0&amp;sortby=rev">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.24</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?hideattic=0&amp;sortby=rev">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="linear_entity_interpolator.cpp"></A><A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/linear_entity_interpolator.cpp?hideattic=0&amp;sortby=rev">linear_entity_interpolator.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/linear_entity_interpolator.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="local_area.cpp"></A><A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_area.cpp?hideattic=0&amp;sortby=rev">local_area.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_area.cpp?rev=1.40&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.40</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="local_entity.cpp"></A><A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/local_entity.cpp?hideattic=0&amp;sortby=rev">local_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/local_entity.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.26</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message.cpp"></A><A HREF="message.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?hideattic=0&amp;sortby=rev">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="moving_entity.cpp"></A><A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/moving_entity.cpp?hideattic=0&amp;sortby=rev">moving_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/moving_entity.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.14</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_client.cpp"></A><A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_client.cpp?hideattic=0&amp;sortby=rev">msg_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_net_base.cpp"></A><A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_net_base.cpp?hideattic=0&amp;sortby=rev">msg_net_base.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_net_base.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="msg_server.cpp"></A><A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_server.cpp?hideattic=0&amp;sortby=rev">msg_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: these files are out of date
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="msg_socket.cpp"></A><A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/msg_socket.cpp?hideattic=0&amp;sortby=rev">msg_socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/msg_socket.cpp?rev=1.59&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.59</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?hideattic=0&amp;sortby=rev">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.48</b></A></td><td>&nbsp; <i>10 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?hideattic=0&amp;sortby=rev">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.22</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?hideattic=0&amp;sortby=rev">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="network.dsp"></A><A HREF="Attic/network.dsp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/network.dsp?hideattic=0&amp;sortby=rev">network.dsp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/network.dsp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>22 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Changed some .dsp names
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="new_message.cpp"></A><A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_message.cpp?hideattic=0&amp;sortby=rev">new_message.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_message.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.2</b></A></td><td>&nbsp; <i>16 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>no message
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="new_service.cpp"></A><A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/new_service.cpp?hideattic=0&amp;sortby=rev">new_service.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/new_service.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.12</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="pt_callback_item.cpp"></A><A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/pt_callback_item.cpp?hideattic=0&amp;sortby=rev">pt_callback_item.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/pt_callback_item.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.4</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="remote_entity.cpp"></A><A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/remote_entity.cpp?hideattic=0&amp;sortby=rev">remote_entity.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/remote_entity.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.17</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="replica.cpp"></A><A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/replica.cpp?hideattic=0&amp;sortby=rev">replica.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/replica.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="service.cpp"></A><A HREF="service.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?hideattic=0&amp;sortby=rev">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.137&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.137</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: lot of debug info to know why a service quit
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="service_5.cpp"></A><A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/service_5.cpp?hideattic=0&amp;sortby=rev">service_5.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/service_5.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.24</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: merge service_5 and add args management
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?hideattic=0&amp;sortby=rev">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.44</b></A></td><td>&nbsp; <i>2 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: stop check if the fucking assert occurs
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?hideattic=0&amp;sortby=rev">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.31</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?hideattic=0&amp;sortby=rev">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>6 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?hideattic=0&amp;sortby=rev">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?hideattic=0&amp;sortby=rev">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.16</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?hideattic=0&amp;sortby=rev">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.16</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?hideattic=0&amp;sortby=rev">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?hideattic=0&amp;sortby=rev">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.12</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?hideattic=0&amp;sortby=rev">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.12</b></A></td><td>&nbsp; <i>3 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?hideattic=0&amp;sortby=rev">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?hideattic=0&amp;sortby=rev">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?hideattic=0&amp;sortby=rev">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?hideattic=0&amp;sortby=rev">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?hideattic=0&amp;sortby=rev">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.5</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?hideattic=0&amp;sortby=rev">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.5</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?hideattic=0&amp;sortby=rev">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.3</b></A></td><td>&nbsp; <i>7 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Jamfile"></A><A HREF="Jamfile?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?hideattic=0&amp;sortby=rev">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="socket.cpp"></A><A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/socket.cpp?hideattic=0&amp;sortby=rev">socket.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/socket.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.44</b></A></td><td>&nbsp; <i>14 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADD: new version of the network system (in NeL and NeLns)
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?hideattic=0&amp;sortby=rev">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?hideattic=0&amp;sortby=rev">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stream_client.cpp"></A><A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_client.cpp?hideattic=0&amp;sortby=rev">stream_client.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stream_server.cpp"></A><A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Attic/stream_server.cpp?hideattic=0&amp;sortby=rev">stream_server.cpp</A>
+ (in the Attic)&nbsp;<a href="./?sortby=rev#dirlist">[Hide]</a></td><td>&nbsp;<A HREF="Attic/stream_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;hideattic=0&amp;sortby=rev"><b>1.8</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVED: not useful
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="hideattic" VALUE="0">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date/index.html
new file mode 100644
index 00000000..4c203e20
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date/index.html
@@ -0,0 +1,219 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#222222"><font color=white>Age</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=date">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Attic"></A><A HREF="Attic/?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="Attic/?sortby=date">Attic/</A>
+&nbsp; <a href="./?hideattic=0&amp;sortby=date#dirlist">[Don't hide]</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="CVS"></A><A HREF="CVS/?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?sortby=date">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="service.cpp"></A><A HREF="service.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?sortby=date">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.136&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.136</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: exit and freeze
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?sortby=date">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.48</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="message.cpp"></A><A HREF="message.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?sortby=date">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>11 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?sortby=date">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?sortby=date">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?sortby=date">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.32</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?sortby=date">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?sortby=date">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.42&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.42</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;legros</td><td>&nbsp; <font size=-1>FIXED: unicallback not called on not shard service relogging
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?sortby=date">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?sortby=date">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?sortby=date">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.33</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?sortby=date">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?sortby=date">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=date">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?sortby=date">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?sortby=date">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?sortby=date">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?sortby=date">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?sortby=date">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?sortby=date">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Jamfile"></A><A HREF="Jamfile?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?sortby=date">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?sortby=date">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?sortby=date">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?sortby=date">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?sortby=date">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.38</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?sortby=date">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?sortby=date">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?sortby=date">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?sortby=date">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?sortby=date">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?sortby=log/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=log/index.html
new file mode 100644
index 00000000..89d94c45
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=log/index.html
@@ -0,0 +1,219 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=log">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=log">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=log">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=log">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=rev"><font color=white>Rev.</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#222222"><font color=white>Last log entry</font></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=log">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Attic"></A><A HREF="Attic/?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="Attic/?sortby=log">Attic/</A>
+&nbsp; <a href="./?hideattic=0&amp;sortby=log#dirlist">[Don't hide]</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="CVS"></A><A HREF="CVS/?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?sortby=log">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Jamfile"></A><A HREF="Jamfile?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?sortby=log">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?sortby=log">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.24</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?sortby=log">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.33</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?sortby=log">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?sortby=log">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="service.cpp"></A><A HREF="service.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?sortby=log">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.136&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.136</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: exit and freeze
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?sortby=log">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?sortby=log">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.21</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?sortby=log">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.48</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?sortby=log">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?sortby=log">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?sortby=log">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.38</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?sortby=log">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.3</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?sortby=log">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.21</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?sortby=log">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.12</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?sortby=log">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.31</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?sortby=log">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?sortby=log">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.16</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?sortby=log">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.32</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?sortby=log">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.27</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?sortby=log">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?sortby=log">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?sortby=log">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?sortby=log">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?sortby=log">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?sortby=log">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.16</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?sortby=log">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.42&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.42</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;legros</td><td>&nbsp; <font size=-1>FIXED: unicallback not called on not shard service relogging
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message.cpp"></A><A HREF="message.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?sortby=log">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.21</b></A></td><td>&nbsp; <i>11 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=log">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?sortby=log"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?sortby=log">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=log"><b>1.12</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="log">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/?sortby=rev/index.html b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=rev/index.html
new file mode 100644
index 00000000..dafecf73
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/?sortby=rev/index.html
@@ -0,0 +1,219 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=rev">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=rev">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=rev">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=rev">src</a> / net</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th><th align=left bgcolor="#222222"><font color=white>Rev.</font></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=date"><font color=white>Age</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=author"><font color=white>Author</font></a></th><th align=left bgcolor="#000000"><a class=title href="./?sortby=log"><font color=white>Last log entry</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=rev">Previous Directory</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="Attic"></A><A HREF="Attic/?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="Attic/?sortby=rev">Attic/</A>
+&nbsp; <a href="./?hideattic=0&amp;sortby=rev#dirlist">[Don't hide]</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#dddddd"><td><A NAME="CVS"></A><A HREF="CVS/?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"></A>
+ <A HREF="CVS/?sortby=rev">CVS/</A>
+</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
+
+<tr bgcolor="#cccccc"><td><A NAME="service.cpp"></A><A HREF="service.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="service.cpp?sortby=rev">service.cpp</A>
+</td><td>&nbsp;<A HREF="service.cpp?rev=1.136&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.136</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: exit and freeze
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="naming_client.cpp"></A><A HREF="naming_client.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="naming_client.cpp?sortby=rev">naming_client.cpp</A>
+</td><td>&nbsp;<A HREF="naming_client.cpp?rev=1.48&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.48</b></A></td><td>&nbsp; <i>3 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quit if the NS ask it
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unified_network.cpp"></A><A HREF="unified_network.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unified_network.cpp?sortby=rev">unified_network.cpp</A>
+</td><td>&nbsp;<A HREF="unified_network.cpp?rev=1.42&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.42</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;legros</td><td>&nbsp; <font size=-1>FIXED: unicallback not called on not shard service relogging
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="inet_address.cpp"></A><A HREF="inet_address.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="inet_address.cpp?sortby=rev">inet_address.cpp</A>
+</td><td>&nbsp;<A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.38</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_net_base.cpp"></A><A HREF="callback_net_base.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_net_base.cpp?sortby=rev">callback_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.33</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_server.cpp"></A><A HREF="buf_server.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_server.cpp?sortby=rev">buf_server.cpp</A>
+</td><td>&nbsp;<A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.32</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="unitime.cpp"></A><A HREF="unitime.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="unitime.cpp?sortby=rev">unitime.cpp</A>
+</td><td>&nbsp;<A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.31</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_sock.cpp"></A><A HREF="buf_sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_sock.cpp?sortby=rev">buf_sock.cpp</A>
+</td><td>&nbsp;<A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.27</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="callback_client.cpp"></A><A HREF="callback_client.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_client.cpp?sortby=rev">callback_client.cpp</A>
+</td><td>&nbsp;<A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.24</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="callback_server.cpp"></A><A HREF="callback_server.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="callback_server.cpp?sortby=rev">callback_server.cpp</A>
+</td><td>&nbsp;<A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_manager.cpp"></A><A HREF="net_manager.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_manager.cpp?sortby=rev">net_manager.cpp</A>
+</td><td>&nbsp;<A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.22</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: changed NULL into InvalidSockId
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message.cpp"></A><A HREF="message.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message.cpp?sortby=rev">message.cpp</A>
+</td><td>&nbsp;<A HREF="message.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>11 days</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>REMOVE: a warning
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_displayer.cpp"></A><A HREF="net_displayer.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_displayer.cpp?sortby=rev">net_displayer.cpp</A>
+</td><td>&nbsp;<A HREF="net_displayer.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="sock.cpp"></A><A HREF="sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="sock.cpp?sortby=rev">sock.cpp</A>
+</td><td>&nbsp;<A HREF="sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.21</b></A></td><td>&nbsp; <i>5 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: quicker
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Makefile.am"></A><A HREF="Makefile.am?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Makefile.am?sortby=rev">Makefile.am</A>
+</td><td>&nbsp;<A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.18</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>Removed stream_client and stream_server
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="buf_client.cpp"></A><A HREF="buf_client.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_client.cpp?sortby=rev">buf_client.cpp</A>
+</td><td>&nbsp;<A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.16</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: commented some nldebug for performance
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_server.cpp"></A><A HREF="login_server.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_server.cpp?sortby=rev">login_server.cpp</A>
+</td><td>&nbsp;<A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.16</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: unified the command format
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="login_client.cpp"></A><A HREF="login_client.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_client.cpp?sortby=rev">login_client.cpp</A>
+</td><td>&nbsp;<A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.14</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: remove nlsleep(0) and set to 10
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="net_log.cpp"></A><A HREF="net_log.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="net_log.cpp?sortby=rev">net_log.cpp</A>
+</td><td>&nbsp;<A HREF="net_log.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.12</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="transport_class.cpp"></A><A HREF="transport_class.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="transport_class.cpp?sortby=rev">transport_class.cpp</A>
+</td><td>&nbsp;<A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.12</b></A></td><td>&nbsp; <i>2 weeks</i></td><td>&nbsp;miller</td><td>&nbsp; <font size=-1>bug fix by Vianney
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="udp_sock.cpp"></A><A HREF="udp_sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="udp_sock.cpp?sortby=rev">udp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.11</b></A></td><td>&nbsp; <i>3 months</i></td><td>&nbsp;cado</td><td>&nbsp; <font size=-1>BUGFIX: wrong address
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="tcp_sock.cpp"></A><A HREF="tcp_sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="tcp_sock.cpp?sortby=rev">tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.7</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="listen_sock.cpp"></A><A HREF="listen_sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="listen_sock.cpp?sortby=rev">listen_sock.cpp</A>
+</td><td>&nbsp;<A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>4 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: removed some debug info
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="message_recorder.cpp"></A><A HREF="message_recorder.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="message_recorder.cpp?sortby=rev">message_recorder.cpp</A>
+</td><td>&nbsp;<A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.6</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="buf_net_base.cpp"></A><A HREF="buf_net_base.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="buf_net_base.cpp?sortby=rev">buf_net_base.cpp</A>
+</td><td>&nbsp;<A HREF="buf_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="dummy_tcp_sock.cpp"></A><A HREF="dummy_tcp_sock.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="dummy_tcp_sock.cpp?sortby=rev">dummy_tcp_sock.cpp</A>
+</td><td>&nbsp;<A HREF="dummy_tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.5</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="login_cookie.cpp"></A><A HREF="login_cookie.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="login_cookie.cpp?sortby=rev">login_cookie.cpp</A>
+</td><td>&nbsp;<A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.3</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: support of precompilated header on visual
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.h"></A><A HREF="stdnet.h?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.h?sortby=rev">stdnet.h</A>
+</td><td>&nbsp;<A HREF="stdnet.h?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.3</b></A></td><td>&nbsp; <i>2 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>CHANGED: serial/send/receive 3 time faster
+</font></td></tr>
+<tr bgcolor="#cccccc"><td><A NAME="Jamfile"></A><A HREF="Jamfile?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="Jamfile?sortby=rev">Jamfile</A>
+</td><td>&nbsp;<A HREF="Jamfile?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>5 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: Jam compile system
+</font></td></tr>
+<tr bgcolor="#dddddd"><td><A NAME="stdnet.cpp"></A><A HREF="stdnet.cpp?sortby=rev"><IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></A>
+ <A HREF="stdnet.cpp?sortby=rev">stdnet.cpp</A>
+</td><td>&nbsp;<A HREF="stdnet.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=rev"><b>1.1</b></A></td><td>&nbsp; <i>6 months</i></td><td>&nbsp;lecroart</td><td>&nbsp; <font size=-1>ADDED: pch
+</font></td></tr>
+</table><hr size=1 NOSHADE><FORM METHOD="GET" ACTION="./">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="rev">
+Show only files with tag:
+<SELECT NAME=only_with_tag onchange="submit()"><OPTION VALUE="">All tags / default branch
+<OPTION>proto_0_2
+<OPTION>proto_0_1
+<OPTION>net_0_1
+<OPTION>nel_0_4
+<OPTION>nel_0_3
+<OPTION>nel_0_2
+<OPTION>MAIN
+<OPTION>HEAD
+<OPTION>georges_v2
+<OPTION>demo_0_1
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE="Go">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/CVS/?sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/CVS/?sortby=date/index.html
new file mode 100644
index 00000000..c06c2144
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/CVS/?sortby=date/index.html
@@ -0,0 +1,75 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / CVS</b></td><td align=right><b></b></td></TR></TABLE>
+<table width="100%" border=0 cellspacing=1 cellpadding=2>
+<tr><th align=left bgcolor="#000000"><a class=title href="./"><font color=white>File</font></a></th></tr>
+<tr bgcolor="#dddddd"><td><A HREF="../?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></A>
+ <A HREF="../?sortby=date">Previous Directory</A>
+</td></tr>
+
+
+</table>
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?sortby=date
new file mode 100644
index 00000000..8411717a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?sortby=date
@@ -0,0 +1,333 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / Makefile.am</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Makefile.am</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="Makefile.am?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 22 09:59:16 2002 UTC</i> (2 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.17: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+Removed stream_client and stream_server
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="Makefile.am?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 25 10:39:55 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.16: +1 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+CHANGED: don't need service5.cpp
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="Makefile.am?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Mar 19 17:42:48 2002 UTC</i> (4 months, 1 week ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+Applied patches which help to have a clen install on GNU/Linux and to make a Debian package (changes on the management of config and log files, bugfixes, etc ...)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="Makefile.am?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 14:40:21 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+ADDED: transport class
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="Makefile.am?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 12:20:05 2001 UTC</i> (9 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +4 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+ADDING: layer5 files in makefile
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="Makefile.am?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Aug 28 13:00:20 2001 UTC</i> (11 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="Makefile.am?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.12: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+ADDED a missing -lpthread to NeLs liking arguments.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="Makefile.am?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jul 27 17:25:40 2001 UTC</i> (12 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+FIXED a NeL compilation problem, know the compilation works with AND without VPATH.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="Makefile.am?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 18:15:06 2001 UTC</i> (13 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +27 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+# FIXED: add some forgotten source files in the list of files to compile.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="Makefile.am?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 13:00:50 2001 UTC</i> (14 months, 2 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +5 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+REMOVED msg_client.cpp msg_net_base.cpp msg_server.cpp from NeL's network Makefile.am
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="Makefile.am?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +9 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="Makefile.am?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 5 09:32:58 2001 UTC</i> (16 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+remove the new_mesasge from the makefile
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="Makefile.am?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 12:52:22 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+ADD: callback* new_service.cpp
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="proto_0_2"></a><a NAME="nel_0_3"></a>
+ Revision <A HREF="Makefile.am?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jan 24 14:09:53 2001 UTC</i> (18 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=proto_0_2">proto_0_2</A>,
+<A HREF="Makefile.am?sortby=date&amp;only_with_tag=nel_0_3">nel_0_3</A>
+</b><BR>Changes since <b>1.5: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+Add Libtool's version info flag for the Library.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="proto_0_1"></a><a NAME="nel_0_2"></a>
+ Revision <A HREF="Makefile.am?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Dec 7 15:38:10 2000 UTC</i> (19 months, 2 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=proto_0_1">proto_0_1</A>,
+<A HREF="Makefile.am?sortby=date&amp;only_with_tag=nel_0_2">nel_0_2</A>
+</b><BR>Changes since <b>1.4: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+Add net_log.cpp to the source file list.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="Makefile.am?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 30 09:31:20 2000 UTC</i> (19 months, 4 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +1 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Remove some forgoten personal hook.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="Makefile.am?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Nov 24 17:17:23 2000 UTC</i> (20 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +7 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+Add a hook to copy the library file in the $(top_srcdir)/lib directory at
+the end of the all target
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="Makefile.am?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 23 11:51:35 2000 UTC</i> (20 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +14 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+Add a more complete compilation system, only the generation of Makefiles and
+the compilation works but not the installation and co ...
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="Makefile.am?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/Makefile.am?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Oct 6 14:17:35 2000 UTC</i> (21 months, 3 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="Makefile.am?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+Initial revision
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.6:proto_0_2">proto_0_2
+<OPTION VALUE="1.5:proto_0_1">proto_0_1
+<OPTION VALUE="1.8:net_0_1">net_0_1
+<OPTION VALUE="1.13:nel_0_4">nel_0_4
+<OPTION VALUE="1.6:nel_0_3">nel_0_3
+<OPTION VALUE="1.5:nel_0_2">nel_0_2
+<OPTION VALUE="1.17:georges_v2">georges_v2
+<OPTION VALUE="1.13:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.18:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.6:proto_0_2">proto_0_2
+<OPTION VALUE="1.5:proto_0_1">proto_0_1
+<OPTION VALUE="1.8:net_0_1">net_0_1
+<OPTION VALUE="1.13:nel_0_4">nel_0_4
+<OPTION VALUE="1.6:nel_0_3">nel_0_3
+<OPTION VALUE="1.5:nel_0_2">nel_0_2
+<OPTION VALUE="1.17:georges_v2">georges_v2
+<OPTION VALUE="1.13:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.18:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.18" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/Makefile.am">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?sortby=date
new file mode 100644
index 00000000..ca29683e
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?sortby=date
@@ -0,0 +1,296 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / buf_client.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>buf_client.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jul 2 15:56:58 2002 UTC</i> (3 weeks, 5 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.15: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+CHANGED: commented some nldebug for performance
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 10 10:11:32 2002 UTC</i> (6 weeks, 6 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +6 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+ADDED: use of htimer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +25 -20
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.12: +3 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:20 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +12 -12
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:03:17 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.9: +17 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+Added Layer 1 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:57:09 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+#Fixed a semicolon that was missing after a nlassert, so it did not compile in release mode
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:38:06 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +17 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+Added support for 32-bit message length
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 24 14:17:51 2001 UTC</i> (14 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +23 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+Miscellaneous bug and doc fixes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Mon May 21 17:02:45 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +15 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+Improved the receive thread termination
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 17 15:37:05 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+Added asserts on length of buffer sent
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 11 09:29:19 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+#Fixed the previous changes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:49:12 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+Changed the way of sending : needs to be logically connected (at user level)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:17:41 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: disconnection callback was called with bad parameters
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="buf_client.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_client.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.10:nel_0_4">nel_0_4
+<OPTION VALUE="1.13:georges_v2">georges_v2
+<OPTION VALUE="1.10:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.16:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.10:nel_0_4">nel_0_4
+<OPTION VALUE="1.13:georges_v2">georges_v2
+<OPTION VALUE="1.10:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.16:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.16" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?rev=1.32&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?rev=1.32&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..1fd0056b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?rev=1.32&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,1083 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/buf_server.cpp - view - 1.32</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="buf_server.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="buf_server.cpp?sortby=date">buf_server.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?sortby=date">buf_server.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.32&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.32','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.32</B>, <i>Tue Jul 2 15:56:58 2002 UTC</i> (3 weeks, 5 days ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.31: +2 -2
+ lines</b><PRE>
+CHANGED: commented some nldebug for performance
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file buf_server.cpp
+ * Network engine, layer 1, server
+ *
+ * $Id: buf_server.cpp,v 1.32 2002/07/02 15:56:58 lecroart Exp $
+ */
+
+/* Copyright, 2001 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/misc/hierarchical_timer.h&quot;
+
+#include &quot;nel/net/buf_server.h&quot;
+
+#ifdef NL_OS_WINDOWS
+#include &lt;winsock2.h&gt;
+//typedef sint socklen_t;
+
+#elif defined NL_OS_UNIX
+#include &lt;unistd.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;sys/time.h&gt;
+#endif
+
+
+using namespace NLMISC;
+using namespace std;
+
+namespace NLNET {
+
+
+/***************************************************************************************************
+ * User main thread (initialization)
+ **************************************************************************************************/
+
+
+/*
+ * Constructor
+ */
+CBufServer::CBufServer( TThreadStategy strategy,
+ &nbsp; &nbsp; &nbsp; &nbsp;uint16 max_threads, uint16 max_sockets_per_thread, bool nodelay, bool replaymode ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;CBufNetBase(),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ThreadStrategy( strategy ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_NoDelay( nodelay ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_MaxThreads( max_threads ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_MaxSocketsPerThread( max_sockets_per_thread ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ConnectionCallback( NULL ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ConnectionCbArg( NULL ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesPushedOut( 0 ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesPoppedIn( 0 ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_PrevBytesPoppedIn( 0 ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_PrevBytesPushedOut( 0 ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ReplayMode( replaymode ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ListenTask( NULL ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ListenThread( NULL ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_NbConnections (0),
+ &nbsp; &nbsp; &nbsp; &nbsp;_ThreadPool(&quot;CBufServer::_ThreadPool&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::CBufServer&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ! _ReplayMode )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenTask = new CListenTask( this );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenThread = IThread::create( _ListenTask );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;/*{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;uint32&gt;::CAccessor syncbpi ( &amp;_BytesPushedIn );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;syncbpi.value() = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;}*/
+}
+
+
+/*
+ * Listens on the specified port
+ */
+void CBufServer::init( uint16 port )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::init&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ! _ReplayMode )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenTask-&gt;init( port );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenThread-&gt;start();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Binding listen socket to any address, port %hu&quot;, port );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Begins to listen on the specified port (call before running thread)
+ */
+void CListenTask::init( uint16 port )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CListenTask::init&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;_ListenSock.init( port );
+}
+
+
+/***************************************************************************************************
+ * User main thread (running)
+ **************************************************************************************************/
+
+
+/*
+ * Constructor
+ */
+CServerTask::CServerTask() : _ExitRequired(false)
+{
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;pipe( _WakeUpPipeHandle );
+#endif
+}
+
+
+
+#ifdef NL_OS_UNIX
+/*
+ * Wake the thread up, when blocked in select (Unix only)
+ */
+void CServerTask::wakeUp()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint8 b;
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( write( _WakeUpPipeHandle[PipeWrite], &amp;b, 1 ) == -1 )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: In CServerTask::wakeUp(): write() failed&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+#endif
+
+
+/*
+ * Destructor
+ */
+CServerTask::~CServerTask()
+{
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;close( _WakeUpPipeHandle[PipeRead] );
+ &nbsp; &nbsp; &nbsp; &nbsp;close( _WakeUpPipeHandle[PipeWrite] );
+#endif
+}
+
+
+/*
+ * Destructor
+ */
+CBufServer::~CBufServer()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::~CBufServer&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Clean listen thread exit
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ! _ReplayMode )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((CListenTask*)(_ListenThread-&gt;getRunnable()))-&gt;requireExit();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((CListenTask*)(_ListenThread-&gt;getRunnable()))-&gt;close();
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenTask-&gt;wakeUp();
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ListenThread-&gt;wait();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete _ListenThread;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete _ListenTask;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Clean receive thread exits
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Waiting for end of threads...&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Tell the threads to exit and wake them up
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Requiring exit&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;requireExit();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Wake the threads up
+ &nbsp; &nbsp; &nbsp; &nbsp;#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;wakeUp();
+ &nbsp; &nbsp; &nbsp; &nbsp;#else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Closing sockets (Win32)&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;Sock-&gt;close();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Waiting&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Wait until the threads have exited
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipt)-&gt;wait();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Deleting sockets, tasks and threads...&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete the socket objects
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete (*ipb);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Under Unix, close the sockets now
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Closing sockets (Unix)&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;Sock-&gt;close();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete the task objects
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete task;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete the thread objects
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete (*ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Exiting CBufServer::~CBufServer&quot; );
+}
+
+
+/*
+ * Disconnect the specified host
+ * Set hostid to NULL to disconnect all connections.
+ * If hostid is not null and the socket is not connected, the method does nothing.
+ * If quick is true, any pending data will not be sent before disconnecting.
+ */
+void CBufServer::disconnect( TSockId hostid, bool quick )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::disconnect&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( hostid != InvalidSockId )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Disconnect only if physically connected
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( hostid-&gt;Sock-&gt;connected() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! quick )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostid-&gt;flush();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostid-&gt;Sock-&gt;disconnect(); // the connection will be removed by the next call of update()
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Disconnect all
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (*ipb)-&gt;Sock-&gt;connected() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! quick )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;flush();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;Sock-&gt;disconnect();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Send a message to the specified host
+ */
+void CBufServer::send( const CMemStream&amp; buffer, TSockId hostid )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::send&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( buffer.length() &gt; 0);
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( buffer.length() &lt;= maxSentBlockSize() );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;H_AUTO (CBufServer_send);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( hostid != InvalidSockId )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;send message number %u&quot;, hostid-&gt;SendNextValue);
+#ifdef NL_BIG_ENDIAN
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = NLMISC_BSWAP32(hostid-&gt;SendNextValue);
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = hostid-&gt;SendNextValue;
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*(uint32*)buffer.buffer() = val;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostid-&gt;SendNextValue++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pushBufferToHost( buffer, hostid );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Push into all send queues
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Send only if the socket is logically connected
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (*ipb)-&gt;connectedState() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;send message number %u&quot;, (*ipb)-&gt;SendNextValue);
+#ifdef NL_BIG_ENDIAN
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = NLMISC_BSWAP32((*ipb)-&gt;SendNextValue);
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = (*ipb)-&gt;SendNextValue;
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*(uint32*)buffer.buffer() = val;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;SendNextValue++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pushBufferToHost( buffer, *ipb );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Checks if there are some data to receive
+ */
+bool CBufServer::dataAvailable()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;H_AUTO (CBufServer_dataAvailable);
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CFifoAccessor recvfifo( &amp;receiveQueue() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Check if the receive queue is empty
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( recvfifo.value().empty() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*sint32 mbsize = recvfifo.value().size() / 1048576;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( mbsize &gt; 0 )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning( &quot;The receive queue size exceeds %d MB&quot;, mbsize );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 val = recvfifo.value().frontLast();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*vector&lt;uint8&gt; buffer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().front( buffer );*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Test if it the next block is a system event
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//switch ( buffer[buffer.size()-1] )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch ( val )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Normal message available
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case CBufNetBase::User:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true; // return immediatly, do not extract the message
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Process disconnection event
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case CBufNetBase::Disconnection:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;uint8&gt; buffer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().front( buffer );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId sockid = *((TSockId*)(&amp;*buffer.begin()));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Disconnection event for %p %s&quot;, sockid, sockid-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sockid-&gt;setConnectedState( false );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call callback if needed
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( disconnectionCallback() != NULL )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disconnectionCallback()( sockid, argOfDisconnectionCallback() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add socket object into the synchronized remove list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Adding the connection to the remove list&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert( ((CServerBufSock*)sockid)-&gt;ownerTask() != NULL );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((CServerBufSock*)sockid)-&gt;ownerTask()-&gt;addToRemoveSet( sockid );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Process connection event
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case CBufNetBase::Connection:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;uint8&gt; buffer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().front( buffer );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId sockid = *((TSockId*)(&amp;*buffer.begin()));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Connection event for %p %s&quot;, sockid, sockid-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sockid-&gt;setConnectedState( true );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call callback if needed
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( connectionCallback() != NULL )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;connectionCallback()( sockid, argOfConnectionCallback() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;default:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;uint8&gt; buffer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().front( buffer );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;LNETL1: Invalid block type: %hu (should be = to %hu&quot;, (uint16)(buffer[buffer.size()-1]), (uint16)(val) );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;LNETL1: Buffer (%d B): [%s]&quot;, buffer.size(), stringFromVector(buffer).c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;LNETL1: Receive queue:&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().display();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror( &quot;LNETL1: Invalid system event type in server receive queue&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Extract system event
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().pop();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while ( true );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Receives next block of data in the specified. The length and hostid are output arguments.
+ * Precond: dataAvailable() has returned true, phostid not null
+ */
+void CBufServer::receive( CMemStream&amp; buffer, TSockId* phostid )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::receive&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;//nlassert( dataAvailable() );
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( phostid != NULL );
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CFifoAccessor recvfifo( &amp;receiveQueue() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert( ! recvfifo.value().empty() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().front( buffer );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().pop();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Extract hostid (and event type)
+ &nbsp; &nbsp; &nbsp; &nbsp;*phostid = *((TSockId*)&amp;(buffer.buffer()[buffer.length()-sizeof(TSockId)-1]));
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( buffer.buffer()[buffer.length()-1] == CBufNetBase::User );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+#ifdef NL_BIG_ENDIAN
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = NLMISC_BSWAP32(*(uint32*)buffer.buffer());
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 val = *(uint32*)buffer.buffer();
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;receive message number %u&quot;, val);
+ &nbsp; &nbsp; &nbsp; &nbsp;if ((*phostid)-&gt;ReceiveNextValue != val)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlstopex ((&quot;LNETL1: !!!LOST A MESSAGE!!! I received the message number %u but I'm waiting the message number %u (cnx %s), warn <A HREF="mailto:lecroart@nevrax.com">lecroart@nevrax.com</A> with the log now please&quot;, val, (*phostid)-&gt;ReceiveNextValue, (*phostid)-&gt;asString().c_str()));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// resync the message number
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*phostid)-&gt;ReceiveNextValue = val;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;(*phostid)-&gt;ReceiveNextValue++;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;buffer.resize( buffer.length()-sizeof(TSockId)-1 );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// TODO OPTIM remove the nldebug for speed
+ &nbsp; &nbsp; &nbsp; &nbsp;//commented for optimisation nldebug( &quot;LNETL1: Read buffer (%d+%d B) from %s&quot;, buffer.length(), sizeof(TSockId)+1, /*stringFromVector(buffer).c_str(), */(*phostid)-&gt;asString().c_str() );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Statistics
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesPoppedIn += buffer.length() + sizeof(TBlockSize);
+}
+
+
+/*
+ * Update the network (call this method evenly)
+ */
+void CBufServer::update()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//nlnettrace( &quot;CBufServer::update-BEGIN&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_NbConnections = 0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// For each thread
+ &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;UPD: Acquiring the Thread Pool&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;UPD: Acquired.&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// For each thread of the pool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// For each socket of the thread, update sending
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! ((*ipb)-&gt;Sock-&gt;connected() &amp;&amp; (*ipb)-&gt;update()) )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Update did not work or the socket is not connected anymore
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Socket %s is disconnected&quot;, (*ipb)-&gt;asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Disconnection event if disconnected (known either from flush (in update) or when receiving data)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ipb)-&gt;advertiseDisconnection( this, *ipb );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*if ( (*ipb)-&gt;advertiseDisconnection( this, *ipb ) )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Now the connection removal is in dataAvailable()
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// POLL6
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_NbConnections++;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//nlnettrace( &quot;CBufServer::update-END&quot; );
+}
+
+uint32 CBufServer::getSendQueueSize( TSockId destid )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( destid != InvalidSockId )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return destid-&gt;SendFifo.size();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add all client buffers
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 total = 0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// For each thread
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// For each thread of the pool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;task-&gt;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// For each socket of the thread, update sending
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;total = (*ipb)-&gt;SendFifo.size ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return total;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Returns the number of bytes received since the previous call to this method
+ */
+uint64 CBufServer::newBytesReceived()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint64 b = bytesReceived();
+ &nbsp; &nbsp; &nbsp; &nbsp;uint64 nbrecvd = b - _PrevBytesPoppedIn;
+ &nbsp; &nbsp; &nbsp; &nbsp;//nlinfo( &quot;b: %&quot;NL_I64&quot;u &nbsp; new: %&quot;NL_I64&quot;u&quot;, b, nbrecvd );
+ &nbsp; &nbsp; &nbsp; &nbsp;_PrevBytesPoppedIn = b;
+ &nbsp; &nbsp; &nbsp; &nbsp;return nbrecvd;
+}
+
+/*
+ * Returns the number of bytes sent since the previous call to this method
+ */
+uint64 CBufServer::newBytesSent()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint64 b = bytesSent();
+ &nbsp; &nbsp; &nbsp; &nbsp;uint64 nbsent = b - _PrevBytesPushedOut;
+ &nbsp; &nbsp; &nbsp; &nbsp;//nlinfo( &quot;b: %&quot;NL_I64&quot;u &nbsp; new: %&quot;NL_I64&quot;u&quot;, b, nbsent );
+ &nbsp; &nbsp; &nbsp; &nbsp;_PrevBytesPushedOut = b;
+ &nbsp; &nbsp; &nbsp; &nbsp;return nbsent;
+}
+
+
+/***************************************************************************************************
+ * Listen thread
+ **************************************************************************************************/
+
+
+/*
+ * Code of listening thread
+ */
+void CListenTask::run()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CListenTask::run&quot; );
+
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;SOCKET descmax;
+ &nbsp; &nbsp; &nbsp; &nbsp;fd_set readers;
+ &nbsp; &nbsp; &nbsp; &nbsp;timeval tv;
+ &nbsp; &nbsp; &nbsp; &nbsp;descmax = _ListenSock.descriptor()&gt;_WakeUpPipeHandle[PipeRead]?_ListenSock.descriptor():_WakeUpPipeHandle[PipeRead];
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Accept connections
+ &nbsp; &nbsp; &nbsp; &nbsp;while ( ! exitRequired() )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get and setup the new socket
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_ZERO( &amp;readers );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_SET( _ListenSock.descriptor(), &amp;readers );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_SET( _WakeUpPipeHandle[PipeRead], &amp;readers );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_sec = 60; /// \todo ace: we perhaps could put NULL to never wake up the select (look at the select man page)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_usec = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int res = ::select( descmax+1, &amp;readers, NULL, NULL, &amp;tv );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch ( res )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case &nbsp;0 : continue; // time-out expired, no results
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case -1 :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we'll ignore message (Interrupted system call) caused by a CTRL-C
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CSock::getLastError() == 4)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL1: Select failed (in listen thread): %s (code %u) but IGNORED&quot;, CSock::errorString( CSock::getLastError() ).c_str(), CSock::getLastError());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror( &quot;LNETL1: Select failed (in listen thread): %s (code %u)&quot;, CSock::errorString( CSock::getLastError() ).c_str(), CSock::getLastError() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( FD_ISSET( _WakeUpPipeHandle[PipeRead], &amp;readers ) )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 b;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( read( _WakeUpPipeHandle[PipeRead], &amp;b, 1 ) == -1 ) // we were woken-up by the wake-up pipe
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: In CListenTask::run(): read() failed&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: listen thread select woken-up&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Incoming connection...&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerBufSock *bufsock = new CServerBufSock( _ListenSock.accept() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;New connection : %s&quot;, bufsock-&gt;asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;Sock-&gt;setNonBlockingMode( true );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( _Server-&gt;noDelay() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;Sock-&gt;setNoDelay( true );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Notify the new connection
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;advertiseConnection( _Server );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Dispatch the socket into the thread pool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Server-&gt;dispatchNewSocket( bufsock );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch ( ESocket&amp; e )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;Exception in listen thread: %s&quot;, e.what() ); // It can occur in normal behavior (e.g. when exiting)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// It can also occur when too many sockets are open (e.g. 885 connections)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Exiting CListenTask::run&quot; );
+}
+
+
+/*
+ * Binds a new socket and send buffer to an existing or a new thread
+ * Note: this method is called in the listening thread.
+ */
+void CBufServer::dispatchNewSocket( CServerBufSock *bufsock )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::dispatchNewSocket&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CThreadPool&gt;::CAccessor poolsync( &amp;_ThreadPool );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _ThreadStrategy == SpreadSockets ) &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Find the thread with the smallest number of connections and check if all
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// threads do not have the same number of connections
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint min = 0xFFFFFFFF;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint max = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt, iptmin, iptmax;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint noc = receiveTask(ipt)-&gt;numberOfConnections();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( noc &lt; min )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;min = noc;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;iptmin = ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( noc &gt; max )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;max = noc;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;iptmax = ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Check if we make the pool of threads grow (if we have not found vacant room
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// and if it is allowed to)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (poolsync.value().empty()) ||
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((min == max) &amp;&amp; (poolsync.value().size() &lt; _MaxThreads)) )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addNewThread( poolsync.value(), bufsock );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Dispatch socket to an existing thread of the pool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(iptmin);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;setOwnerTask( task );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;addNewSocket( bufsock );
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;wakeUp();
+#endif &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( min &gt;= (uint)_MaxSocketsPerThread )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning( &quot;LNETL1: Exceeding the maximum number of sockets per thread&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: New socket dispatched to thread %d&quot;, iptmin-poolsync.value().begin() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else // _ThreadStrategy == FillThreads
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CThreadPool::iterator ipt;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipt=poolsync.value().begin(); ipt!=poolsync.value().end(); ++ipt )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint noc = receiveTask(ipt)-&gt;numberOfConnections();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( noc &lt; _MaxSocketsPerThread )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Check if we have to make the thread pool grow (if we have not found vacant room)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ipt == poolsync.value().end() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( poolsync.value().size() == _MaxThreads )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning( &quot;LNETL1: Exceeding the maximum number of threads&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addNewThread( poolsync.value(), bufsock );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Dispatch socket to an existing thread of the pool
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = receiveTask(ipt);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;setOwnerTask( task );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;addNewSocket( bufsock );
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;wakeUp();
+#endif &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: New socket dispatched to thread %d&quot;, ipt-poolsync.value().begin() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Creates a new task and run a new thread for it
+ * Precond: bufsock not null
+ */
+void CBufServer::addNewThread( CThreadPool&amp; threadpool, CServerBufSock *bufsock )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CBufServer::addNewThread&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( bufsock != NULL );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Create new task and dispatch the socket to it
+ &nbsp; &nbsp; &nbsp; &nbsp;CServerReceiveTask *task = new CServerReceiveTask( this );
+ &nbsp; &nbsp; &nbsp; &nbsp;bufsock-&gt;setOwnerTask( task );
+ &nbsp; &nbsp; &nbsp; &nbsp;task-&gt;addNewSocket( bufsock );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Add a new thread to the pool, with this task
+ &nbsp; &nbsp; &nbsp; &nbsp;IThread *thr = IThread::create( task );
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;threadpool.push_back( thr );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thr-&gt;start();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Added a new thread; pool size is %d&quot;, threadpool.size() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: New socket dispatched to thread %d&quot;, threadpool.size()-1 );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/***************************************************************************************************
+ * Receive threads
+ **************************************************************************************************/
+
+
+/*
+ * Code of receiving threads for servers
+ */
+void CServerReceiveTask::run()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;CServerReceiveTask::run&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;SOCKET descmax;
+ &nbsp; &nbsp; &nbsp; &nbsp;fd_set readers;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Time-out value for select (it can be long because we do not do any thing else in this thread)
+ &nbsp; &nbsp; &nbsp; &nbsp;timeval tv;
+#if defined NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;// POLL7
+ &nbsp; &nbsp; &nbsp; &nbsp;nice( 2 );
+#endif // NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// Copy of _Connections
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;TSockId&gt; &nbsp; &nbsp; &nbsp; &nbsp;connections_copy; &nbsp; &nbsp; &nbsp; &nbsp;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;while ( ! exitRequired() )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 1. Remove closed connections
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;clearClosedConnections();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// POLL8
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 2-SELECT-VERSION : select() on the sockets handled in the present thread
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;descmax = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_ZERO( &amp;readers );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool skip;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool alldisconnected = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ipb;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Lock _Connections
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;_Connections );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Prepare to avoid select if there is no connection
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;skip = connectionssync.value().empty();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Fill the select array and copy _Connections
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;connections_copy.clear();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ipb=connectionssync.value().begin(); ipb!=connectionssync.value().end(); ++ipb )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (*ipb)-&gt;Sock-&gt;connected() ) // exclude disconnected sockets that are not deleted
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Note: there is a mutex in there !
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alldisconnected = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Copy _Connections element
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;connections_copy.push_back( *ipb );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add socket descriptor to the select array
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_SET( (*ipb)-&gt;Sock-&gt;descriptor(), &amp;readers );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Calculate descmax for select
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (*ipb)-&gt;Sock-&gt;descriptor() &gt; descmax )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;descmax = (*ipb)-&gt;Sock-&gt;descriptor();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add the wake-up pipe into the select array
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FD_SET( _WakeUpPipeHandle[PipeRead], &amp;readers );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( _WakeUpPipeHandle[PipeRead]&gt;descmax )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;descmax = _WakeUpPipeHandle[PipeRead];
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Unlock _Connections, use connections_copy instead
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifndef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Avoid select if there is no connection (Windows only)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( skip || alldisconnected )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep( 1 ); // nice
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_sec = 0; // short time because the newly added connections can't be added to the select fd_set
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_usec = 10000; // NEW: set to 500ms because otherwise new connections handling are too slow
+#elif defined NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// POLL7
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_sec = 3600; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 1 hour (=&gt; 1 select every 3.6 second for 1000 connections)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tv.tv_usec = 0;
+#endif // NL_OS_WINDOWS
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call select
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int res = ::select( descmax+1, &amp;readers, NULL, NULL, &amp;tv );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// POLL9
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 3. Test the result
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch ( res )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case &nbsp;0 : continue; // time-out expired, no results
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// \todo cado: the error code is not properly retrieved
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case -1 :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we'll ignore message (Interrupted system call) caused by a CTRL-C
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*if (CSock::getLastError() == 4)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL1: Select failed (in receive thread): %s (code %u) but IGNORED&quot;, CSock::errorString( CSock::getLastError() ).c_str(), CSock::getLastError());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nlerror( &quot;LNETL1: Select failed (in receive thread): %s (code %u)&quot;, CSock::errorString( CSock::getLastError() ).c_str(), CSock::getLastError() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Select failed (in receive thread): %s (code %u)&quot;, CSock::errorString( CSock::getLastError() ).c_str(), CSock::getLastError() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 4. Get results
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;TSockId&gt;::iterator ic;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ic=connections_copy.begin(); ic!=connections_copy.end(); ++ic )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( FD_ISSET( (*ic)-&gt;Sock-&gt;descriptor(), &amp;readers ) != 0 )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CServerBufSock *serverbufsock = static_cast&lt;CServerBufSock*&gt;(static_cast&lt;CBufSock*&gt;(*ic));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 4. Receive data
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( serverbufsock-&gt;receivePart() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Copy sockid
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;uint8&gt; hidvec;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hidvec.resize( sizeof(TSockId)+1 );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcpy( &amp;*hidvec.begin(), &amp;(*ic), sizeof(TSockId) );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add event type to hidvec
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hidvec[sizeof(TSockId)] = (uint8)CBufNetBase::User;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Push message into receive queue
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//uint32 bufsize;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//sint32 mbsize;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;RCV: Acquiring the receive queue... &quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CFifoAccessor recvfifo( &amp;_Server-&gt;receiveQueue() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;RCV: Acquired, pushing the received buffer... &quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;recvfifo.value().push( serverbufsock-&gt;receivedBuffer(), hidvec );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;RCV: Pushed, releasing the receive queue...&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//recvfifo.value().display();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//bufsize = serverbufsock-&gt;receivedBuffer().size();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//mbsize = recvfifo.value().size() / 1048576;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;RCV: Released.&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*if ( mbsize &gt; 1 )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning( &quot;The receive queue size exceeds %d MB&quot;, mbsize );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Statistics
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSynchronized&lt;uint32&gt;::CAccessor syncbpi ( &amp;_Server-&gt;syncBytesPushedIn() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;syncbpi.value() += bufsize;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch ( ESocketConnectionClosed&amp; )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Connection %s closed&quot;, serverbufsock-&gt;asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch ( ESocket&amp; )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Connection %s broken&quot;, serverbufsock-&gt;asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*ic)-&gt;Sock-&gt;disconnect();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+/*
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;skip = true; // don't check _WakeUpPipeHandle (yes, check it to read any written byte)
+#endif
+
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Test wake-up pipe
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( (!skip) &amp;&amp; (FD_ISSET( _WakeUpPipeHandle[PipeRead], &amp;readers )) )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 b;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( read( _WakeUpPipeHandle[PipeRead], &amp;b, 1 ) == -1 ) // we were woken-up by the wake-up pipe
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: In CServerReceiveTask::run(): read() failed&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Receive thread select woken-up&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlnettrace( &quot;Exiting CServerReceiveTask::run&quot; );
+}
+
+
+/*
+ * Delete all connections referenced in the remove list (double-mutexed)
+ */
+
+void CServerReceiveTask::clearClosedConnections()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CConnections::iterator ic;
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CSynchronized&lt;CConnections&gt;::CAccessor removesetsync( &amp;_RemoveSet );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! removesetsync.value().empty() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete closed connections
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CSynchronized&lt;CConnections&gt;::CAccessor connectionssync( &amp;_Connections );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for ( ic=removesetsync.value().begin(); ic!=removesetsync.value().end(); ++ic )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL1: Removing a connection&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId sid = (*ic);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Remove from the connection list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;connectionssync.value().erase( *ic );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete the socket object
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete sid;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Clear remove list
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;removesetsync.value().clear();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?sortby=date
new file mode 100644
index 00000000..8d7aedbd
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?sortby=date
@@ -0,0 +1,456 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / buf_server.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>buf_server.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.32"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.32</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.32&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.32&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.32&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.32&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jul 2 15:56:58 2002 UTC</i> (3 weeks, 5 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.31: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.31&amp;r2=1.32&amp;sortby=date">1.31</A>
+<PRE>
+CHANGED: commented some nldebug for performance
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.31"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.31&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.31&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.31&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.31&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.30: +6 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.30&amp;r2=1.31&amp;sortby=date">1.30</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.30"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.30&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.30</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.30&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.30&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.30&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.30&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 10 10:11:32 2002 UTC</i> (6 weeks, 6 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.29: +6 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.29&amp;r2=1.30&amp;sortby=date">1.29</A>
+<PRE>
+ADDED: use of htimer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.29"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.29&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.29</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.29&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.29&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.29&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.29&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.28: +32 -20
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.28&amp;r2=1.29&amp;sortby=date">1.28</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.28"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.28&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.28</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.28&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.28&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.28&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.28&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Apr 18 16:53:10 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.27: +22 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.27&amp;r2=1.28&amp;sortby=date">1.27</A>
+<PRE>
+FIXED: manage endianess for the message number
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Apr 9 12:23:52 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.26: +5 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+BUGFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.25: +2 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Feb 6 17:29:03 2002 UTC</i> (5 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.24: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+CHANGED back nlsleep to 1 to avoid slowing the PC
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:20 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +37 -37
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:24:41 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+FIXED: error code badly interpreted (?) (not yet fully fixed anyway)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Sep 12 16:55:23 2001 UTC</i> (10 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.19: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+ADDED: stat in the mutex (with named mutex)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Sep 5 08:54:46 2001 UTC</i> (10 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +7 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+BUGFIX: when we lost a message, resync message number to avoid text flood
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Aug 24 11:36:47 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+CHANGED: the lost message error into a warning
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Aug 24 08:23:52 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+FIXED: change some message from info to debug
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 17:21:56 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +19 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+ADDED: debug features to count message to see if some messages are lost
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jul 4 08:33:05 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+#REMOVED: debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 29 08:48:07 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +16 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+#DOCFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 29 08:33:15 2001 UTC</i> (12 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +24 -12
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+FIXED: after few minutes, services on linux consumed all the CPU. fixed now
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:29:16 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +39 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: stat information (queue size)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:03:17 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +115 -98
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+Added Layer 1 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 15:40:43 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+CHANGED: on windows, select timeout is now 500ms
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:57:09 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+#Fixed a semicolon that was missing after a nlassert, so it did not compile in release mode
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:38:06 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+Added support for 32-bit message length
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 30 08:53:50 2001 UTC</i> (13 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+Bugfix: initializations in constructors (nonblocking was bugging)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 24 14:17:51 2001 UTC</i> (14 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +17 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+Miscellaneous bug and doc fixes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 18 14:32:23 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +34 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+Added &quot;disconnect all&quot; feature
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 17 15:37:05 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Added asserts on length of buffer sent
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 11 09:29:19 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +17 -10
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#Fixed the previous changes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:49:12 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +6 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+Changed the way of sending : needs to be logically connected (at user level)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="buf_server.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_server.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.20:nel_0_4">nel_0_4
+<OPTION VALUE="1.28:georges_v2">georges_v2
+<OPTION VALUE="1.20:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.32:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.20:nel_0_4">nel_0_4
+<OPTION VALUE="1.28:georges_v2">georges_v2
+<OPTION VALUE="1.20:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.32:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.32" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?sortby=date
new file mode 100644
index 00000000..f3140287
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?sortby=date
@@ -0,0 +1,406 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / buf_sock.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>buf_sock.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jul 2 15:56:58 2002 UTC</i> (3 weeks, 5 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.26: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+CHANGED: commented some nldebug for performance
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.25: +2 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 10 10:11:33 2002 UTC</i> (6 weeks, 6 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.24: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+ADDED: use of htimer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Mon May 27 16:50:24 2002 UTC</i> (2 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 22 14:27:45 2002 UTC</i> (2 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+FIXED: assert failed
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +30 -15
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.20: +6 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Feb 20 18:09:17 2002 UTC</i> (5 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.19: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+#FIXED: doxygen warning
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:20 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +10 -10
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Sep 21 13:36:03 2001 UTC</i> (10 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+BUGFIX: when printing message, it occurs some time that the message contains a % and crash the printf
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Sep 12 16:55:23 2001 UTC</i> (10 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.15: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+ADDED: stat in the mutex (with named mutex)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 30 17:07:36 2001 UTC</i> (10 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +6 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+CHANGED: update procedure and time sync
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 17:21:56 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +4 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+ADDED: debug features to count message to see if some messages are lost
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jul 11 15:15:10 2001 UTC</i> (12 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+BUGFIX: stringFromVectorPart() with len=0 asserted in debug mode
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 12:33:00 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +27 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: nlassert when sockid is invalid and destroy the structure on the dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:03:17 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +5 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+Added Layer 1 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 17:01:43 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+BUGIFX: cast isprint from uint8 to int
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 16:25:25 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+BUGFIX: error in assert condition in stringFromVectorPart()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:38:06 2001 UTC</i> (13 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +20 -50
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+Added support for 32-bit message length
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 31 14:07:13 2001 UTC</i> (13 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +57 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+BUGFIX: non-blocking sending for big buffers in flush()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 24 14:17:51 2001 UTC</i> (14 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +18 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+Miscellaneous bug and doc fixes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 11 09:29:19 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +4 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+#Fixed the previous changes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 15:41:53 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +19 -21
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Improved sending in flush()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:49:12 2001 UTC</i> (14 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +25 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+Changed the way of sending : needs to be logically connected (at user level)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 4 09:52:56 2001 UTC</i> (14 months, 3 weeks ago) by <i>coutelas</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +13 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: set appid to 0 at ctor and dont access to sock when sock is NULL
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="buf_sock.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/buf_sock.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="buf_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.16:nel_0_4">nel_0_4
+<OPTION VALUE="1.21:georges_v2">georges_v2
+<OPTION VALUE="1.16:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.27:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.16:nel_0_4">nel_0_4
+<OPTION VALUE="1.21:georges_v2">georges_v2
+<OPTION VALUE="1.16:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.27:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.27" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/buf_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?sortby=date
new file mode 100644
index 00000000..afdfd892
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?sortby=date
@@ -0,0 +1,379 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / callback_client.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>callback_client.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.23: +6 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 11 15:32:22 2002 UTC</i> (6 weeks, 5 days ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+FIXED: flush should not crash any longer on client callbacks
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 22 08:04:17 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +1 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+REMOVED: layer2 used
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +9 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Apr 18 16:53:10 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.19: +13 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+FIXED: manage endianess for the message number
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +7 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +7 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:22:26 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+ADDED: default callback
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 30 17:07:36 2001 UTC</i> (10 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.13: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+CHANGED: update procedure and time sync
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Aug 24 08:23:52 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+FIXED: change some message from info to debug
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 17:21:56 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +17 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: debug features to count message to see if some messages are lost
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:29:42 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+ADDED: stat information (queue size)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 12:33:00 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+ADDED: nlassert when sockid is invalid and destroy the structure on the dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:06:18 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +299 -10
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+Added layer 3 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 12:11:14 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +1 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+#BUGFIX: on threadid
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 10:22:26 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +12 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+FIXED: add assert and multithread check
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:42:30 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+MODIFIED: no size limit anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 29 09:30:08 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+MODIFIED: reformated the output message to be filtered easier
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +47 -28
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 09:48:38 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#DOCFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 18:04:25 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +10 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADD: layer4 implemented by CMsgSocket
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="callback_client.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_client.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 16:18:35 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+#ADD: network layer4 interface
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.3:net_0_1">net_0_1
+<OPTION VALUE="1.14:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.14:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.24:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.3:net_0_1">net_0_1
+<OPTION VALUE="1.14:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.14:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.24:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.24" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?rev=1.33&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?rev=1.33&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..b3f66b6e
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?rev=1.33&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,556 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/callback_net_base.cpp - view - 1.33</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="callback_net_base.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="callback_net_base.cpp?sortby=date">callback_net_base.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?sortby=date">callback_net_base.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.33&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.33','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.33</B>, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.32: +4 -7
+ lines</b><PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file callback_net_base.cpp
+ * Network engine, layer 3, base
+ *
+ * $Id: callback_net_base.cpp,v 1.33 2002/06/12 10:16:34 lecroart Exp $
+ */
+
+/* Copyright, 2001 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/misc/string_id_array.h&quot;
+#include &quot;nel/misc/hierarchical_timer.h&quot;
+
+#include &quot;nel/net/buf_sock.h&quot;
+#include &quot;nel/net/callback_net_base.h&quot;
+
+#ifdef USE_MESSAGE_RECORDER
+#pragma message ( &quot;NeL Net layer 3: message recorder enabled&quot; )
+#include &quot;nel/net/message_recorder.h&quot;
+#else
+#pragma message ( &quot;NeL Net layer 3: message recorder disabled&quot; )
+#endif
+
+
+using namespace std;
+using namespace NLMISC;
+
+namespace NLNET {
+
+
+/*
+ *
+ */
+void cbnbMessageRecvAssociations (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// receive a new message association
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId size;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: The other side gave me %d association strings&quot;, size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (CStringIdArray::TStringId i = 0; i &lt; size; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::string name;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId id;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if id == -1, it means that there are no callback associated to this message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// it should not happen, it mean that one side send a message that the other side
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// can't manage in his callbackarray.
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// to resolve the problem, add the callback in the callbackarray in the other side
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// and put NULL if you don't want to manage this message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (id != -1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: &nbsp;association '%s' -&gt; %d&quot;, name.c_str (), id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.getSIDA().addString (name, id);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * the other side want to know some of my association, send them!
+ */
+void cbnbMessageAskAssociations (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA(), &quot;RA&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId size;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: The other side want %d string associations&quot;, size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; size; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string name;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: &nbsp;sending association '%s' -&gt; %d&quot;, name.c_str (), netbase._OutputSIDA.getId(name));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if this assert occurs, it means that the other side ask an unknown message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// or that there are different types of client (with differents callbackarray) and one of the client doesn't have this callback
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert(netbase._OutputSIDA.getId(name) != -1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (name);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId id = netbase._OutputSIDA.getId (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (id);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the message to the other side
+ &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);
+}
+
+static TCallbackItem cbnbMessageAssociationArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AA&quot;, cbnbMessageAskAssociations },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;RA&quot;, cbnbMessageRecvAssociations },
+};
+
+
+/*
+ * Disconnection callback
+ */
+void cbnbNewDisconnection (TSockId from, void *data)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (data != NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp;CCallbackNetBase *base = (CCallbackNetBase *)data;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug(&quot;LNETL3NB: cbnbNewDisconnection()&quot;);
+
+#ifdef USE_MESSAGE_RECORDER
+ &nbsp; &nbsp; &nbsp; &nbsp;// Record or replay disconnection
+ &nbsp; &nbsp; &nbsp; &nbsp;base-&gt;noticeDisconnection( from );
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// Call the client callback if necessary
+ &nbsp; &nbsp; &nbsp; &nbsp;if (base-&gt;_DisconnectionCallback != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;base-&gt;_DisconnectionCallback (from, base-&gt;_DisconnectionCbArg);
+}
+
+
+/*
+ * Constructor
+ */
+CCallbackNetBase::CCallbackNetBase( &nbsp;TRecordingState rec, const string&amp; recfilename, bool recordall ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;_FirstUpdate (true), _DisconnectionCallback(NULL), _DisconnectionCbArg(NULL)
+#ifdef USE_MESSAGE_RECORDER
+ &nbsp; &nbsp; &nbsp; &nbsp;, _MR_RecordingState(rec), _MR_UpdateCounter(0)
+#endif
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_ThreadId = getThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;_NewDisconnectionCallback = cbnbNewDisconnection;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesSent = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesReceived = 0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;createDebug(); // for addNegativeFilter to work even in release and releasedebug modes
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add the callback needed to associate messages with id
+ &nbsp; &nbsp; &nbsp; &nbsp;addCallbackArray (cbnbMessageAssociationArray, sizeof (cbnbMessageAssociationArray) / sizeof (cbnbMessageAssociationArray[0]));
+
+#ifdef USE_MESSAGE_RECORDER
+ &nbsp; &nbsp; &nbsp; &nbsp;switch ( _MR_RecordingState )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp;case Record :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MR_Recorder.startRecord( recfilename, recordall );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp;case Replay :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MR_Recorder.startReplay( recfilename );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp;default:;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// No recording
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+}
+
+
+/*
+ * &nbsp; &nbsp; &nbsp;Append callback array with the specified array
+ */
+void CCallbackNetBase::addCallbackArray (const TCallbackItem *callbackarray, CStringIdArray::TStringId arraysize)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// be sure that the 2 array have the same size
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_CallbackArray.size () == (uint)_OutputSIDA.size ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (arraysize == 1 &amp;&amp; callbackarray[0].Callback == NULL &amp;&amp; string(&quot;&quot;) == callbackarray[0].Key)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// it's an empty array, ignore it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// resize the array
+ &nbsp; &nbsp; &nbsp; &nbsp;sint oldsize = _CallbackArray.size();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_CallbackArray.resize (oldsize + arraysize);
+ &nbsp; &nbsp; &nbsp; &nbsp;_OutputSIDA.resize (oldsize + arraysize);
+
+//TOO MUCH MESSAGE &nbsp; &nbsp; &nbsp;nldebug (&quot;L3NB_CB: Adding %d callback to the array&quot;, arraysize);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; arraysize; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId ni = oldsize + i;
+//TOO MUCH MESSAGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;L3NB_CB: Adding callback to message '%s', id '%d'&quot;, callbackarray[i].Key, ni);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// copy callback value
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_CallbackArray[ni] = callbackarray[i];
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add the string to the string id array
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_OutputSIDA.addString (callbackarray[i].Key, ni);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+// &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_CB: Added %d callback Now, there's %d callback associated with message type&quot;, arraysize, _CallbackArray.size ());
+}
+
+
+/*
+ * processOneMessage()
+ */
+void CCallbackNetBase::processOneMessage ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;H_AUTO (CCallbackNetBase_processOneMessage);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgin (_OutputSIDA, &quot;&quot;, true);
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId tsid;
+ &nbsp; &nbsp; &nbsp; &nbsp;receive (msgin, &amp;tsid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesReceived += msgin.length ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB: Received a message %s from %s&quot;, msgin.toString().c_str(), tsid-&gt;asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// now, we have to call the good callback
+ &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CStringIdArray::TStringId pos = -1;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (msgin.TypeHasAnId)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pos = msgin.getId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::string name = msgin.getName ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint16 i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0; i &lt; (sint16) _CallbackArray.size (); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (name == _CallbackArray[i].Key)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pos = i;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TMsgCallback &nbsp; &nbsp; &nbsp; &nbsp;cb = NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (pos &lt; 0 || pos &gt;= (sint16) _CallbackArray.size ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_DefaultCallback == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: Callback %s not found in _CallbackArray&quot;, msgin.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cb = _DefaultCallback;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cb = _CallbackArray[pos].Callback;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId realid = getSockId (tsid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!realid-&gt;AuthorizedCallback.empty() &amp;&amp; msgin.getName() != realid-&gt;AuthorizedCallback)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!&quot;, tsid-&gt;asString().c_str(), msgin.toString().c_str(), tsid-&gt;AuthorizedCallback.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disconnect (tsid);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else if (cb == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: Callback %s is NULL, can't call it&quot;, msgin.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_CB: Calling callback (%s)%s&quot;, msgin.getName().c_str(), (cb==_DefaultCallback)?&quot; DEFAULT_CB&quot;:&quot;&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cb(msgin, realid, *this);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;if (pos &lt; 0 || pos &gt;= (sint16) _CallbackArray.size ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_DefaultCallback == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: Callback %s not found in _CallbackArray&quot;, msgin.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ...
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TSockId realid = getSockId (tsid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!realid-&gt;AuthorizedCallback.empty() &amp;&amp; msgin.getName() != realid-&gt;AuthorizedCallback)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: %s try to call the callback %s but only %s is authorized. Disconnect him!&quot;, tsid-&gt;asString().c_str(), msgin.toString().c_str(), tsid-&gt;AuthorizedCallback.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disconnect (tsid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (_CallbackArray[pos].Callback == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;LNETL3NB_CB: Callback %s is NULL, can't call it&quot;, msgin.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_CB: Calling callback (%s)&quot;, _CallbackArray[pos].Key);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_CallbackArray[pos].Callback (msgin, realid, *this);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+}
+
+
+
+/*
+ * baseUpdate
+ * Recorded : YES
+ * Replayed : YES
+ */
+void CCallbackNetBase::baseUpdate (sint32 timeout)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;H_AUTO (CCallbackNetBase_baseUpdate);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( timeout &gt;= -1 );
+ &nbsp; &nbsp; &nbsp; &nbsp;TTime t0 = CTime::getLocalTime();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// The first time, we init time counters
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;if (_FirstUpdate)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug(&quot;LNETL3NB: First update()&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_FirstUpdate = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LastUpdateTime = t0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LastMovedStringArray = t0;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Every 1 seconds if we have new unknown association, we ask them to the other side
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;if (t0 - _LastUpdateTime &gt; &nbsp;1000)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug(&quot;LNETL3NB: baseUpdate()&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LastUpdateTime = t0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const set&lt;string&gt; &amp;sa = _InputSIDA.getNeedToAskedStringArray ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!sa.empty ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_InputSIDA, &quot;AA&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nlassert (sa.size () &lt; 65536); // no size limit anymore
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId size = sa.size ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: I need %d string association, ask them to the other side&quot;, size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (set&lt;string&gt;::iterator it = sa.begin(); it != sa.end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: &nbsp;what is the id of '%s'?&quot;, (*it).c_str ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string str(*it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (str);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the message to the other side
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;send (msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_InputSIDA.moveNeedToAskToAskedStringArray();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LastMovedStringArray = t0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Every 60 seconds if we have not answered association, we ask again to get them!
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!_InputSIDA.getAskedStringArray().empty() &amp;&amp; t0 - _LastMovedStringArray &gt; 60000)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we didn't have an answer for the association, resend them
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const set&lt;string&gt; sa = _InputSIDA.getAskedStringArray ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_InputSIDA, &quot;AA&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nlassert (sa.size () &lt; 65536); // no size limit anymore
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CStringIdArray::TStringId size = sa.size ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: client didn't answer my asked association, retry! I need %d string association, ask them to the other side&quot;, size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (set&lt;string&gt;::iterator it = sa.begin(); it != sa.end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: &nbsp;what is the id of '%s'?&quot;, (*it).c_str ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string str(*it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (str);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// sends the message to the other side
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;send (msgout, 0);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LastMovedStringArray = t0;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/*
+ &nbsp; &nbsp; &nbsp; &nbsp; * timeout -1 &nbsp; &nbsp;=&gt; &nbsp;read one message in the queue
+ &nbsp; &nbsp; &nbsp; &nbsp; * timeout 0 &nbsp; &nbsp; =&gt; &nbsp;read all messages in the queue
+ &nbsp; &nbsp; &nbsp; &nbsp; * timeout other =&gt; &nbsp;read all messages in the queue until timeout expired (at least all one time)
+ &nbsp; &nbsp; &nbsp; &nbsp; */
+
+ &nbsp; &nbsp; &nbsp; &nbsp;bool exit = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!exit)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// process all messages in the queue
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (dataAvailable ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;processOneMessage ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (timeout == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// need to exit?
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (timeout == 0 || (sint32)(CTime::getLocalTime() - t0) &gt; timeout)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// enable multithreading on windows :-/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AUTO (CCallbackNetBase_baseUpdate_nlSleep);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (10);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef USE_MESSAGE_RECORDER
+ &nbsp; &nbsp; &nbsp; &nbsp;_MR_UpdateCounter++;
+#endif
+
+}
+
+
+const &nbsp; CInetAddress&amp; CCallbackNetBase::hostAddress (TSockId hostid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// should never be called
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;static CInetAddress tmp;
+ &nbsp; &nbsp; &nbsp; &nbsp;return tmp;
+}
+
+void &nbsp; &nbsp;CCallbackNetBase::setOtherSideAssociations (const char **associationarray, NLMISC::CStringIdArray::TStringId arraysize)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: setOtherSideAssociations() sets %d association strings&quot;, arraysize);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; arraysize; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB_ASSOC: &nbsp;association '%s' -&gt; %d&quot;, associationarray[i], i);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getSIDA().addString (associationarray[i], i);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void &nbsp; &nbsp;CCallbackNetBase::displayAllMyAssociations ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_OutputSIDA.display ();
+}
+
+void &nbsp; &nbsp;CCallbackNetBase::authorizeOnly (const char *callbackName, TSockId hostid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;LNETL3NB: authorizeOnly (%s, %s)&quot;, callbackName, hostid-&gt;asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;hostid = getSockId (hostid);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (hostid != InvalidSockId);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;hostid-&gt;AuthorizedCallback = (callbackName == NULL)?&quot;&quot;:callbackName;
+}
+
+
+#ifdef USE_MESSAGE_RECORDER
+
+/*
+ * Replay dataAvailable() in replay mode
+ */
+bool CCallbackNetBase::replayDataAvailable()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( _MR_RecordingState == Replay );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _MR_Recorder.ReceivedMessages.empty() )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Fill the queue of received messages related to the present update
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MR_Recorder.replayNextDataAvailable( _MR_UpdateCounter );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return replaySystemCallbacks();
+}
+
+
+/*
+ * Record or replay disconnection
+ */
+void CCallbackNetBase::noticeDisconnection( TSockId hostid )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (hostid != InvalidSockId); &nbsp; &nbsp; &nbsp; &nbsp;// invalid hostid
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _MR_RecordingState != Replay )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( _MR_RecordingState == Record )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Record disconnection
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage emptymsg;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MR_Recorder.recordNext( _MR_UpdateCounter, Disconnecting, hostid, emptymsg );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Replay disconnection
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostid-&gt;disconnect( false );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+#endif // USE_MESSAGE_RECORDER
+
+
+
+/*
+ * checkThreadId
+ */
+void CCallbackNetBase::checkThreadId () const
+{
+/* &nbsp; &nbsp; &nbsp;some people use this class in different thread but with a mutex to be sure to have
+ &nbsp; &nbsp; &nbsp; &nbsp;no concurent access
+ &nbsp; &nbsp; &nbsp; &nbsp;if (getThreadId () != _ThreadId)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;You try to access to the same CCallbackClient or CCallbackServer with 2 differents thread (%d and %d)&quot;, _ThreadId, getThreadId());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+}
+
+
+} // NLNET
+
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?sortby=date
new file mode 100644
index 00000000..08cb4310
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?sortby=date
@@ -0,0 +1,469 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / callback_net_base.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>callback_net_base.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.33"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.33</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.33&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.33&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.33&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.33&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.32: +4 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.32&amp;r2=1.33&amp;sortby=date">1.32</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.32"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.32</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.32&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.32&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.32&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.32&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 10 10:11:33 2002 UTC</i> (6 weeks, 6 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.31: +7 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.31&amp;r2=1.32&amp;sortby=date">1.31</A>
+<PRE>
+ADDED: use of htimer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.31"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.31&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.31&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.31&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.31&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.30: +3 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.30&amp;r2=1.31&amp;sortby=date">1.30</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.30"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.30&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.30</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.30&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.30&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.30&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.30&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Feb 11 10:20:54 2002 UTC</i> (5 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.29: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.29&amp;r2=1.30&amp;sortby=date">1.29</A>
+<PRE>
+CHANGED: remove nlsleep(0) and set to 10
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.29"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.29&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.29</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.29&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.29&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.29&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.29&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.28: +2 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.28&amp;r2=1.29&amp;sortby=date">1.28</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.28"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.28&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.28</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.28&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.28&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.28&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.28&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.27: +26 -26
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.27&amp;r2=1.28&amp;sortby=date">1.27</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.26: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.25: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:22:26 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.24: +43 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+ADDED: default callback
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Sep 20 13:24:24 2001 UTC</i> (10 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+BUGFIX in constructor with a client in release and releasedebug
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 30 17:07:36 2001 UTC</i> (10 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.22: +15 -33
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+CHANGED: update procedure and time sync
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jul 18 16:13:22 2001 UTC</i> (12 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+FIX: now when a callback is not found, doesn't nlerror
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:29:42 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +6 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+ADDED: stat information (queue size)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 12:33:00 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.19: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+ADDED: nlassert when sockid is invalid and destroy the structure on the dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:06:18 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +118 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+Added layer 3 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 14 13:55:10 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +4 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+REMOVE: thread id check commented because some people use this class in different thread
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 12:11:14 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +2 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+#BUGFIX: on threadid
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 10:22:26 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +24 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+FIXED: add assert and multithread check
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 15:41:11 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +90 -52
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+CHANGED: the update policy (look service.dxt for more info)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 7 16:16:47 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+#DOC: added some comments on an assert
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 5 15:37:00 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +18 -18
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+CHANGED: the name of the suffix for debug information
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 29 12:14:15 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+#remove a debug that flood the output
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 29 09:30:08 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +23 -23
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+MODIFIED: reformated the output message to be filtered easier
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 17 15:36:45 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+#Typos
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:19:27 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +13 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+BUGFIX: addCallbackArray now ignores empty array. callback are called with a good sockid
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 4 09:53:42 2001 UTC</i> (14 months, 3 weeks ago) by <i>coutelas</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +7 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+BUGFIX: don't crash when you set NULL to authorizeOnly
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +263 -56
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Apr 3 08:58:20 2001 UTC</i> (15 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.5: +8 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADDED timeout argument in update()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 15 15:08:50 2001 UTC</i> (16 months, 2 weeks ago) by <i>coutelas</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: method setTimeout
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 15:44:30 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+#TNetCallback for connection callbacks
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 09:48:38 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#DOCFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 18:04:25 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +61 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADD: layer4 implemented by CMsgSocket
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="callback_net_base.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_net_base.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 16:18:35 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_net_base.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+#ADD: network layer4 interface
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.6:net_0_1">net_0_1
+<OPTION VALUE="1.23:nel_0_4">nel_0_4
+<OPTION VALUE="1.31:georges_v2">georges_v2
+<OPTION VALUE="1.23:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.33:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.6:net_0_1">net_0_1
+<OPTION VALUE="1.23:nel_0_4">nel_0_4
+<OPTION VALUE="1.31:georges_v2">georges_v2
+<OPTION VALUE="1.23:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.33:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.33" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_net_base.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?sortby=date
new file mode 100644
index 00000000..18dbfe6e
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?sortby=date
@@ -0,0 +1,359 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / callback_server.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>callback_server.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.21: +4 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +8 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.19: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 14:40:04 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+REMOVED: sendAllMyAssociation () is not use
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +8 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Oct 25 12:13:02 2001 UTC</i> (9 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+Compilfix: nlassertex in debug mode
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:22:26 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+ADDED: default callback
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:29:42 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.12: +14 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+ADDED: stat information (queue size)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 12:33:00 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: nlassert when sockid is invalid and destroy the structure on the dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:06:18 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +266 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+Added layer 3 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 10:22:26 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +16 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+FIXED: add assert and multithread check
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 15:41:11 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+CHANGED: the update policy (look service.dxt for more info)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 1 13:42:30 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+MODIFIED: no size limit anymore
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 29 09:30:08 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +6 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+MODIFIED: reformated the output message to be filtered easier
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +62 -54
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Feb 26 15:13:30 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.4: +5 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+#small changes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 15:44:30 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +2 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+#TNetCallback for connection callbacks
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 09:48:28 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +11 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#ADD: listenAddress()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 18:04:25 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +41 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADD: layer4 implemented by CMsgSocket
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="callback_server.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/callback_server.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 22 16:18:35 2001 UTC</i> (17 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="callback_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+#ADD: network layer4 interface
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:net_0_1">net_0_1
+<OPTION VALUE="1.13:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.13:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.22:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:net_0_1">net_0_1
+<OPTION VALUE="1.13:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.13:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.22:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.22" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/callback_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?rev=1.38&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?rev=1.38&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..4986879c
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?rev=1.38&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,452 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/inet_address.cpp - view - 1.38</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="inet_address.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="inet_address.cpp?sortby=date">inet_address.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?sortby=date">inet_address.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.38&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.38','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.38</B>, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>georges_v2, HEAD</b><BR>Changes since <b>1.37: +3 -6
+ lines</b><PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file inet_address.cpp
+ * Class CInetAddress (IP address + port)
+ *
+ * $Id: inet_address.cpp,v 1.38 2001/12/28 10:17:21 lecroart Exp $
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/inet_address.h&quot;
+#include &quot;nel/net/sock.h&quot;
+
+#ifdef NL_OS_WINDOWS
+
+#include &lt;winsock2.h&gt;
+
+#elif defined NL_OS_UNIX
+
+#include &lt;unistd.h&gt;
+#include &lt;sys/socket.h&gt;
+#include &lt;arpa/inet.h&gt;
+#include &lt;netinet/in.h&gt;
+#include &lt;netdb.h&gt;
+
+#define WSAGetLastError() 0
+#define SOCKET_ERROR -1
+
+#endif
+
+
+using namespace std;
+
+
+namespace NLNET
+{
+
+bool CInetAddress::RetrieveNames = true;
+
+
+/*
+ * Constructor
+ */
+CInetAddress::CInetAddress() :
+ &nbsp;_Valid( false )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init();
+ &nbsp; &nbsp; &nbsp; &nbsp;_SockAddr-&gt;sin_port = 0; // same as htons(0)
+ &nbsp; &nbsp; &nbsp; &nbsp;memset( &amp;_SockAddr-&gt;sin_addr, 0, sizeof(in_addr) ); // same as htonl(INADDR_ANY)
+}
+
+
+/*
+ * Constructor with ip address, port=0
+ */
+CInetAddress::CInetAddress( const in_addr *ip )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init();
+ &nbsp; &nbsp; &nbsp; &nbsp;_SockAddr-&gt;sin_port = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;memcpy( &amp;_SockAddr-&gt;sin_addr, ip, sizeof(in_addr) );
+}
+
+
+/*
+ * Alternate constructor (calls setByName())
+ */
+CInetAddress::CInetAddress( const std::string&amp; hostName, uint16 port ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid( false )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init();
+ &nbsp; &nbsp; &nbsp; &nbsp;setPort( port );
+ &nbsp; &nbsp; &nbsp; &nbsp;setByName( hostName );
+}
+
+
+/*
+ * Alternate constructor (calls setNameAndPort())
+ */
+CInetAddress::CInetAddress( const std::string&amp; hostNameAndPort ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid( false )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init();
+ &nbsp; &nbsp; &nbsp; &nbsp;setNameAndPort( hostNameAndPort );
+}
+
+
+/*
+ * Copy constructor
+ */
+CInetAddress::CInetAddress( const CInetAddress&amp; other ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid( false )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init();
+ &nbsp; &nbsp; &nbsp; &nbsp;_HostName = other._HostName;
+ &nbsp; &nbsp; &nbsp; &nbsp;memcpy( _SockAddr, other._SockAddr, sizeof( *_SockAddr ) );
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid = other._Valid;
+}
+
+
+/*
+ * Assignment operator
+ */
+CInetAddress&amp; CInetAddress::operator=( const CInetAddress&amp; other )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_HostName = other._HostName;
+ &nbsp; &nbsp; &nbsp; &nbsp;memcpy( _SockAddr, other._SockAddr, sizeof( *_SockAddr ) );
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid = other._Valid;
+ &nbsp; &nbsp; &nbsp; &nbsp;return *this;
+}
+
+
+/*
+ * Comparison == operator
+ */
+bool operator==( const CInetAddress&amp; a1, const CInetAddress&amp; a2 )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// Compares the sockaddr structure except the last 8 bytes equal to zero.
+ &nbsp; &nbsp; &nbsp; &nbsp;return ( memcmp( a1._SockAddr, a2._SockAddr, sizeof(sockaddr_in)-8 ) == 0 );
+}
+
+
+/*
+ * Comparison &lt; operator
+ */
+bool operator&lt;( const CInetAddress&amp; a1, const CInetAddress&amp; a2 )
+{
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( a1._SockAddr-&gt;sin_addr.S_un.S_addr == a2._SockAddr-&gt;sin_addr.S_un.S_addr )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ( a1.port() &lt; a2.port() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ( a1._SockAddr-&gt;sin_addr.S_un.S_addr &lt; a2._SockAddr-&gt;sin_addr.S_un.S_addr );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+#elif defined NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( a1._SockAddr-&gt;sin_addr.s_addr == a2._SockAddr-&gt;sin_addr.s_addr )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ( a1.port() &lt; a2.port() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ( a1._SockAddr-&gt;sin_addr.s_addr &lt; a2._SockAddr-&gt;sin_addr.s_addr );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif &nbsp;
+}
+
+
+/*
+ * Constructor contents
+ */
+void CInetAddress::init()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CSock::initNetwork(); /// \todo cado: handle exception (because init() is called within a constructor)
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;_SockAddr = new sockaddr_in;
+ &nbsp; &nbsp; &nbsp; &nbsp;_SockAddr-&gt;sin_family = AF_INET;
+ &nbsp; &nbsp; &nbsp; &nbsp;memset( _SockAddr-&gt;sin_zero, 0, 8 );
+}
+
+
+/*
+ * Destructor
+ */
+CInetAddress::~CInetAddress()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;delete _SockAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp;// _Valid = false;
+}
+
+
+/*
+ * Sets hostname and port (ex: www.nevrax.com:80)
+ */
+void CInetAddress::setNameAndPort( const std::string&amp; hostNameAndPort )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;int pos = hostNameAndPort.find_first_of (':');
+ &nbsp; &nbsp; &nbsp; &nbsp;if (pos != string::npos)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setPort( atoi(hostNameAndPort.substr(pos + 1).c_str()) );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setPort( 0 );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if pos == -1, it will copy all the string
+ &nbsp; &nbsp; &nbsp; &nbsp;setByName( hostNameAndPort.substr (0, pos) );
+}
+
+
+/*
+ * Resolves a name
+ */
+CInetAddress&amp; CInetAddress::setByName( const std::string&amp; hostName )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// Try to convert directly for addresses such as a.b.c.d
+ &nbsp; &nbsp; &nbsp; &nbsp;in_addr iaddr;
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp;iaddr.S_un.S_addr = inet_addr( hostName.c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( iaddr.S_un.S_addr == INADDR_NONE )
+#elif defined NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp;iaddr.s_addr = inet_addr( hostName.c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( iaddr.s_addr == INADDR_NONE )
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Otherwise use the traditional DNS look-up
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostent *phostent = gethostbyname( hostName.c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( phostent == NULL )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Valid = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Network error: resolution of hostname '%s' failed&quot;, hostName.c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// return *this;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( (string(&quot;Hostname resolution failed for &quot;)+hostName).c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HostName = string( phostent-&gt;h_name );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcpy( &amp;_SockAddr-&gt;sin_addr, phostent-&gt;h_addr, sizeof(in_addr) );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HostName = hostName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memcpy( &amp;_SockAddr-&gt;sin_addr, &amp;iaddr, sizeof(iaddr) );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;return *this;
+}
+
+
+/*
+ * Sets port
+ */
+void CInetAddress::setPort( uint16 port )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_SockAddr-&gt;sin_port = htons( port );
+
+}
+
+
+/* Sets internal socket address directly (contents is copied).
+ * It also retrieves the host name if CInetAddress::RetrieveNames is true.
+ */
+void CInetAddress::setSockAddr( const sockaddr_in* saddr )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;memcpy( _SockAddr, saddr, sizeof(*saddr) );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Get host name
+ &nbsp; &nbsp; &nbsp; &nbsp;// Warning: when it can't find it, it take more than 4 seconds
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( CInetAddress::RetrieveNames )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hostent *phostent = gethostbyaddr( (char*)&amp;saddr-&gt;sin_addr.s_addr, 4, &nbsp;AF_INET );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( phostent == NULL )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HostName = ipAddress();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HostName = string( phostent-&gt;h_name );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;_Valid = true;
+}
+
+
+/*
+ * Returns if object (address and port) is valid
+ */
+bool CInetAddress::isValid() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return ( _Valid &amp;&amp; _SockAddr-&gt;sin_port!=0 ); // same as ntohs(0)
+}
+
+
+/*
+ * Returns internal socket address (read only)
+ */
+const sockaddr_in *CInetAddress::sockAddr() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return _SockAddr;
+}
+
+
+/*
+ * Returns internal IP address
+ */
+uint32 CInetAddress::internalIPAddress() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return _SockAddr-&gt;sin_addr.s_addr;
+}
+
+
+/*
+ * Returns readable IP address. (ex: &quot;195.68.21.195&quot;)
+ */
+string CInetAddress::ipAddress() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;/*stringstream ss; // or use inet_ntoa
+ &nbsp; &nbsp; &nbsp; &nbsp;ss &lt;&lt; inet_ntoa ( _SockAddr-&gt;sin_addr );
+ &nbsp; &nbsp; &nbsp; &nbsp;return ss.str();*/
+ &nbsp; &nbsp; &nbsp; &nbsp;return string( inet_ntoa( _SockAddr-&gt;sin_addr ) );
+}
+
+
+/*
+ * Returns host name. (ex: &quot;www.nevrax.org&quot;)
+ */
+const string&amp; CInetAddress::hostName() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return _HostName;
+}
+
+
+/*
+ * Returns port
+ */
+uint16 CInetAddress::port() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return ntohs( _SockAddr-&gt;sin_port );
+}
+
+
+/*
+ * Returns hostname and port as a string. (ex: &quot;www.nevrax.org:80 (195.68.21.195)&quot;)
+ */
+std::string CInetAddress::asString() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;stringstream ss;
+ &nbsp; &nbsp; &nbsp; &nbsp;ss &lt;&lt; hostName() &lt;&lt; &quot;:&quot; &lt;&lt; port() &lt;&lt; &quot; (&quot; &lt;&lt; ipAddress() &lt;&lt; &quot;)&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;return ss.str();
+}
+
+
+/*
+ * Returns IP address and port as a string. (ex: &quot;195.68.21.195:80&quot;)
+ */
+std::string CInetAddress::asIPString() const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;stringstream ss;
+ &nbsp; &nbsp; &nbsp; &nbsp;ss &lt;&lt; ipAddress() &lt;&lt; &quot;:&quot; &lt;&lt; port();
+ &nbsp; &nbsp; &nbsp; &nbsp;return ss.str();
+}
+
+
+/*
+ * Serialize
+ */
+void CInetAddress::serial( NLMISC::IStream&amp; s )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CMemStream *ms = dynamic_cast&lt;NLMISC::CMemStream*&gt;(&amp;s);
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ms &amp;&amp; ms-&gt;stringMode() )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// String stream
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string addrs;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ms-&gt;isReading() )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ms-&gt;serial( addrs );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setNameAndPort( addrs );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;addrs = asIPString();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ms-&gt;serial( addrs );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Binary stream
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.serialBuffer( (uint8*)_SockAddr, sizeof(*_SockAddr) ); // this is possible only because the contents of _SockAddr is platform-independant !
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.serial( _Valid );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Common
+ &nbsp; &nbsp; &nbsp; &nbsp;s.serial( _Valid );
+}
+
+
+/*
+ * Creates a CInetAddress object with local host address, port=0
+ */
+CInetAddress CInetAddress::localHost()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;const uint maxlength = 80;
+ &nbsp; &nbsp; &nbsp; &nbsp;char localhost [maxlength];
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( gethostname( localhost, maxlength ) != 0 )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Unable to get local hostname&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress localaddr = CInetAddress( string(localhost) );
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( localaddr.ipAddress() != &quot;127.0.0.1&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;return localaddr;
+}
+
+
+/* Returns the list of the local host addresses (with port=0)
+ * (especially useful if the host is multihomed)
+ */
+std::vector&lt;CInetAddress&gt; CInetAddress::localAddresses()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// 1. Get local host name
+ &nbsp; &nbsp; &nbsp; &nbsp;const uint maxlength = 80;
+ &nbsp; &nbsp; &nbsp; &nbsp;char localhost [maxlength];
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( gethostname( localhost, maxlength ) == SOCKET_ERROR )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Unable to get local hostname&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// 2. Get address list
+ &nbsp; &nbsp;hostent *phostent = gethostbyname( localhost );
+ &nbsp; &nbsp;if ( phostent == NULL )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( (string(&quot;Hostname resolution failed for &quot;)+string(localhost)).c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;uint i;
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;CInetAddress&gt; vect;
+ &nbsp; &nbsp;for ( i=0; phostent-&gt;h_addr_list[i]!=0; ++i )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vect.push_back( CInetAddress( (const in_addr*)(phostent-&gt;h_addr_list[i]) ) );
+ &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return vect;
+}
+
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?sortby=date
new file mode 100644
index 00000000..139a2275
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?sortby=date
@@ -0,0 +1,533 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / inet_address.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>inet_address.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.38"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.38</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.38&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.38&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.38&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.38&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.37: +3 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.37&amp;r2=1.38&amp;sortby=date">1.37</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.37"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.37&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.37</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.37&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.37&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.37&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.37&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.36: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.36&amp;r2=1.37&amp;sortby=date">1.36</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.36"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.36&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.36</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.36&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.36&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.36&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.36&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Oct 25 12:12:03 2001 UTC</i> (9 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.35: +20 -26
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.35&amp;r2=1.36&amp;sortby=date">1.35</A>
+<PRE>
+ADDED multiformat mem stream
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.35"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.35&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.35</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.35&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.35&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.35&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.35&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Sep 28 12:53:48 2001 UTC</i> (9 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.34: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.34&amp;r2=1.35&amp;sortby=date">1.34</A>
+<PRE>
+#BUGFIX: SOCKET_ERROR missing
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.34"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.34&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.34</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.34&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.34&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.34&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.34&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Sep 28 12:39:44 2001 UTC</i> (9 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.33: +41 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.33&amp;r2=1.34&amp;sortby=date">1.33</A>
+<PRE>
+ADDED address enumeration, multihomed hosts support
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.33"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.33</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.33&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.33&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.33&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.33&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:31:19 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.32: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.32&amp;r2=1.33&amp;sortby=date">1.32</A>
+<PRE>
+DOCFIX: change todo syntax
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.32"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.32</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.32&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.32&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.32&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.32&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 08:45:13 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.31: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.31&amp;r2=1.32&amp;sortby=date">1.31</A>
+<PRE>
+Doxfix: added file desc
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.31"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.31&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.31&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.31&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.31&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:01:01 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.30: +55 -19
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.30&amp;r2=1.31&amp;sortby=date">1.30</A>
+<PRE>
+Added serialization to string stream
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.30"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.30&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.30</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.30&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.30&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.30&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.30&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 15 14:45:38 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.29: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.29&amp;r2=1.30&amp;sortby=date">1.29</A>
+<PRE>
+Changed serialization : no longer transfers the hostname
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.29"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.29&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.29</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.29&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.29&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.29&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.29&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.28: +43 -12
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.28&amp;r2=1.29&amp;sortby=date">1.28</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.28"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.28&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.28</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.28&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.28&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.28&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.28&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Mar 28 09:35:47 2001 UTC</i> (16 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.27: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.27&amp;r2=1.28&amp;sortby=date">1.27</A>
+<PRE>
+Small change in the way CInetAddress::ipAddress() works
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 15 18:02:15 2001 UTC</i> (16 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.26: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+localHost() didn't compile on Linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 15 16:41:16 2001 UTC</i> (16 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.25: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+ADDED IP display in asString() + assert in localHost()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a><a NAME="proto_0_2"></a><a NAME="proto_0_1"></a><a NAME="nel_0_3"></a><a NAME="nel_0_2"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jan 16 11:23:03 2001 UTC</i> (18 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=proto_0_2">proto_0_2</A>,
+<A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=proto_0_1">proto_0_1</A>,
+<A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=nel_0_3">nel_0_3</A>,
+<A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=nel_0_2">nel_0_2</A>
+</b><BR>Changes since <b>1.24: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jan 15 14:44:26 2001 UTC</i> (18 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jan 15 13:40:57 2001 UTC</i> (18 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+better error handling for sockets
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jan 2 14:39:21 2001 UTC</i> (18 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +7 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+small debug and doc update
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 27 10:43:50 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +6 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+Mod. setSockAddr()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 27 10:07:07 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.19: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+Removed somes warnings
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 23 13:09:50 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+Using config file for the naming client
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 22 15:56:47 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +29 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+Naming service now allocates port numbers
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 21 17:30:55 2000 UTC</i> (20 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +13 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+Add GNU/Linux support and use the inet_ntoa function to keep it as compatible
+as possible
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 15 10:26:22 2000 UTC</i> (20 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+Removed throw ()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 24 15:35:51 2000 UTC</i> (21 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +10 -10
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+new copyright headers
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Oct 11 16:25:25 2000 UTC</i> (21 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+Improved NamingClient
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Oct 11 13:23:50 2000 UTC</i> (21 months, 2 weeks ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+Change NL_OS_LINUX to NL_OS_UNIX to make it more unix &quot;generic&quot;
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 10 15:28:15 2000 UTC</i> (21 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +11 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+Added CNamingClient
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Oct 9 08:46:29 2000 UTC</i> (21 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+Updated CLog
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Oct 4 14:34:10 2000 UTC</i> (21 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +11 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+Improved logging system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 3 13:27:12 2000 UTC</i> (21 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +1 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+Changed name from CServerSocket to CMsgSocket...
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Oct 2 16:42:23 2000 UTC</i> (21 months, 3 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +37 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+Message system.
+CDatagram needs some modifications to work.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Sep 25 15:01:47 2000 UTC</i> (22 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +6 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+updated code doc
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Sep 25 11:14:23 2000 UTC</i> (22 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+First net logging system (CNetDisplayer, CLogService)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Sep 21 09:45:09 2000 UTC</i> (22 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+added CDatagramSocket, upgraded and tested OK all other network classes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Sep 19 09:14:03 2000 UTC</i> (22 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +15 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Updated comments
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Sep 18 17:13:15 2000 UTC</i> (22 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +72 -28
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+CSocket, CServerSocket, CInetAddress and CMessage were tested and seem to work fine.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Sep 14 16:40:53 2000 UTC</i> (22 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+Corrected some missings #include problems
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="inet_address.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/inet_address.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Sep 14 16:17:21 2000 UTC</i> (22 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="inet_address.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+new net directory
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.25:proto_0_2">proto_0_2
+<OPTION VALUE="1.25:proto_0_1">proto_0_1
+<OPTION VALUE="1.28:net_0_1">net_0_1
+<OPTION VALUE="1.33:nel_0_4">nel_0_4
+<OPTION VALUE="1.25:nel_0_3">nel_0_3
+<OPTION VALUE="1.25:nel_0_2">nel_0_2
+<OPTION VALUE="1.38:georges_v2">georges_v2
+<OPTION VALUE="1.33:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.38:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.25:proto_0_2">proto_0_2
+<OPTION VALUE="1.25:proto_0_1">proto_0_1
+<OPTION VALUE="1.28:net_0_1">net_0_1
+<OPTION VALUE="1.33:nel_0_4">nel_0_4
+<OPTION VALUE="1.25:nel_0_3">nel_0_3
+<OPTION VALUE="1.25:nel_0_2">nel_0_2
+<OPTION VALUE="1.38:georges_v2">georges_v2
+<OPTION VALUE="1.33:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.38:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.38" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/inet_address.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?sortby=date
new file mode 100644
index 00000000..e32b7488
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?sortby=date
@@ -0,0 +1,196 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / listen_sock.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>listen_sock.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +6 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:31:19 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.1: +2 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+DOCFIX: change todo syntax
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="listen_sock.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/listen_sock.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="listen_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.2:nel_0_4">nel_0_4
+<OPTION VALUE="1.6:georges_v2">georges_v2
+<OPTION VALUE="1.2:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.2:nel_0_4">nel_0_4
+<OPTION VALUE="1.6:georges_v2">georges_v2
+<OPTION VALUE="1.2:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/listen_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?sortby=date
new file mode 100644
index 00000000..69a5a7b6
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?sortby=date
@@ -0,0 +1,276 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / login_client.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>login_client.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="login_client.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Feb 11 10:20:54 2002 UTC</i> (5 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="login_client.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.13: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+CHANGED: remove nlsleep(0) and set to 10
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="login_client.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jan 14 17:51:26 2002 UTC</i> (6 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+#infochanged
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="login_client.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 15:36:14 2001 UTC</i> (6 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +38 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: udp mode for login system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="login_client.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +2 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="login_client.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="login_client.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:22:03 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +4 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+CHANGED: new compatability with the unified network protocole
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="login_client.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jul 2 14:27:33 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="login_client.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.7: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+BUGFIX: linux doesn't receive the message just before the disconnection
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="login_client.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jul 2 11:44:18 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +7 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+BUGFIX: fix the bad if test expression causing on linux bad results on authentification
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="login_client.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 09:00:44 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +4 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+Doxfix: added file desc
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="login_client.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 10:21:33 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +43 -18
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+FIXED: release CCallbackClient at dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="login_client.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 3 13:30:01 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+BUGFIX: forgot .c_str() in nldebug
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="login_client.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:57:16 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+BUGFIX: forgot some c_str() and new lines
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="login_client.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:54:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +6 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: forgot to change v2 to nel/net
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="login_client.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_client.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_client.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.8:nel_0_4">nel_0_4
+<OPTION VALUE="1.14:georges_v2">georges_v2
+<OPTION VALUE="1.8:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.14:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.8:nel_0_4">nel_0_4
+<OPTION VALUE="1.14:georges_v2">georges_v2
+<OPTION VALUE="1.8:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.14:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.14" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_client.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?sortby=date
new file mode 100644
index 00000000..49ed66c3
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?sortby=date
@@ -0,0 +1,166 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / login_cookie.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>login_cookie.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="login_cookie.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="login_cookie.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:31:20 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.1: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+DOCFIX: change todo syntax
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="login_cookie.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_cookie.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_cookie.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.2:nel_0_4">nel_0_4
+<OPTION VALUE="1.3:georges_v2">georges_v2
+<OPTION VALUE="1.2:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.3:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.2:nel_0_4">nel_0_4
+<OPTION VALUE="1.3:georges_v2">georges_v2
+<OPTION VALUE="1.2:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.3:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.3" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_cookie.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?rev=1.16&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?rev=1.16&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..f68bcdc7
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?rev=1.16&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,506 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/login_server.cpp - view - 1.16</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="login_server.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="login_server.cpp?sortby=date">login_server.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?sortby=date">login_server.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.16&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.16','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.16</B>, <i>Tue Mar 26 09:44:47 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>georges_v2, HEAD</b><BR>Changes since <b>1.15: +57 -20
+ lines</b><PRE>
+CHANGED: unified the command format
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file login_server.cpp
+ * CLoginServer is the interface used by the front end to accepts authenticate users.
+ *
+ * $Id: login_server.cpp,v 1.16 2002/03/26 09:44:47 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/callback_client.h&quot;
+#include &quot;nel/net/service.h&quot;
+
+#include &quot;nel/net/login_cookie.h&quot;
+#include &quot;nel/net/login_server.h&quot;
+
+#include &quot;nel/net/udp_sock.h&quot;
+
+using namespace std;
+using namespace NLMISC;
+
+namespace NLNET {
+
+struct CPendingUser
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CPendingUser (const CLoginCookie &amp;cookie) : Cookie (cookie) { }
+ &nbsp; &nbsp; &nbsp; &nbsp;CLoginCookie Cookie;
+};
+
+static list&lt;CPendingUser&gt; PendingUsers;
+
+static CCallbackServer *Server;
+static string ListenAddr;
+
+static TDisconnectClientCallback DisconnectClientCallback = NULL;
+
+/// contains the correspondance between userid and the sockid
+map&lt;uint32, TSockId&gt; UserIdSockAssociations;
+
+TNewClientCallback NewClientCallback = NULL;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+///////////// CONNECTION TO THE WELCOME SERVICE //////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+void cbWSChooseShard (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// the WS call me that a new client want to come in my shard
+ &nbsp; &nbsp; &nbsp; &nbsp;string reason;
+ &nbsp; &nbsp; &nbsp; &nbsp;CLoginCookie cookie;
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// S08: receive &quot;CS&quot; message from WS and send &quot;SCS&quot; message to WS
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (cookie);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;list&lt;CPendingUser&gt;::iterator it;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (it = PendingUsers.begin(); it != PendingUsers.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).Cookie == cookie)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the cookie already exists, erase it and return false
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;cookie %s is already in the pending user list&quot;, cookie.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PendingUsers.erase (it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reason = &quot;cookie already exists&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;if (it == PendingUsers.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add it to the awaiting client
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PendingUsers.push_back (CPendingUser (cookie));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reason = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;WS&quot;), &quot;SCS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (reason);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (cookie);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ListenAddr);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;WS&quot;, msgout);
+}
+
+void cbWSChooseShard5 (CMessage &amp;msgin, const std::string &amp;serviceName, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// the WS call me that a new client want to come in my shard
+ &nbsp; &nbsp; &nbsp; &nbsp;string reason;
+ &nbsp; &nbsp; &nbsp; &nbsp;CLoginCookie cookie;
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// S08: receive &quot;CS&quot; message from WS and send &quot;SCS&quot; message to WS
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (cookie);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;list&lt;CPendingUser&gt;::iterator it;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (it = PendingUsers.begin(); it != PendingUsers.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).Cookie == cookie)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the cookie already exists, erase it and return false
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;cookie %s is already in the pending user list&quot;, cookie.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PendingUsers.erase (it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reason = &quot;cookie already exists&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;if (it == PendingUsers.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add it to the awaiting client
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;New cookie %s inserted in the pending user list (awaiting new client)&quot;, cookie.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PendingUsers.push_back (CPendingUser (cookie));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reason = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;SCS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (reason);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (cookie);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ListenAddr);
+ &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send (&quot;WS&quot;, msgout);
+}
+
+void cbWSDisconnectClient5 (CMessage &amp;msgin, const std::string &amp;serviceName, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// the WS tells me that i have to disconnect a client
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 userid;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (userid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;map&lt;uint32, TSockId&gt;::iterator it = UserIdSockAssociations.find (userid);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (it == UserIdSockAssociations.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Can't disconnect the user %d, he is not found&quot;, userid);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Disconnect the user %d&quot;, userid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Server-&gt;disconnect ((*it).second);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (DisconnectClientCallback != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DisconnectClientCallback (userid);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void cbWSDisconnectClient (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;cbWSDisconnectClient5 (msgin, &quot;&quot;, 0);
+}
+
+static TCallbackItem WSCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;CS&quot;, cbWSChooseShard },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;DC&quot;, cbWSDisconnectClient },
+};
+
+static TUnifiedCallbackItem WSCallbackArray5[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;CS&quot;, cbWSChooseShard5 },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;DC&quot;, cbWSDisconnectClient5 },
+};
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+///////////// CONNECTION TO THE CLIENT ///////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+void cbShardValidation (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// S13: receive &quot;SV&quot; message from client
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the client send me a cookie
+ &nbsp; &nbsp; &nbsp; &nbsp;CLoginCookie cookie;
+ &nbsp; &nbsp; &nbsp; &nbsp;string reason;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (cookie);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// verify that the user was pending
+ &nbsp; &nbsp; &nbsp; &nbsp;reason = CLoginServer::isValidCookie (cookie);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (netbase.getSIDA (), &quot;SV&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout2.serial (reason);
+ &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout2, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!reason.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;User (%s) is not in the pending user list (cookie:%s)&quot;, netbase.hostAddress(from).asString().c_str(), cookie.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// deconnect him
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;netbase.disconnect (from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add the user association
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 userid = cookie.getUserId();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UserIdSockAssociations.insert (make_pair(userid, from));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// identification OK, let's call the user callback
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (NewClientCallback != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NewClientCallback (from, cookie);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ok, now, he can call all callback
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Server-&gt;authorizeOnly (NULL, from);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void ClientConnection (TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug(&quot;new client connection: %s&quot;, from-&gt;asString ().c_str ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// the client could only call &quot;SV&quot; message
+ &nbsp; &nbsp; &nbsp; &nbsp;Server-&gt;authorizeOnly (&quot;SV&quot;, from);
+}
+
+
+static const TCallbackItem ClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;SV&quot;, cbShardValidation },
+};
+
+void cfcbListenAddress (CConfigFile::CVar &amp;var)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the new ListenAddr
+ &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = var.asString();
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// is the var is empty or not found, take it from the listenAddress()
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ListenAddr.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = Server-&gt;listenAddress ().asIPString();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;Listen Address trapped '%s'&quot;, ListenAddr.c_str());
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+///////////// CONNECTION TO THE WELCOME SERVICE //////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+void CLoginServer::init (CCallbackServer &amp;server, TNewClientCallback ncl)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// connect to the welcome service
+ &nbsp; &nbsp; &nbsp; &nbsp;connectToWS ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add callback to the server
+ &nbsp; &nbsp; &nbsp; &nbsp;server.addCallbackArray (ClientCallbackArray, sizeof (ClientCallbackArray) / sizeof (ClientCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp;server.setConnectionCallback (ClientConnection, NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cfcbListenAddress (IService::getInstance()-&gt;ConfigFile.getVar(&quot;ListenAddress&quot;));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;ConfigFile.setCallback(&quot;ListenAddress&quot;, cfcbListenAddress);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// if the listen addr is not in the config file, try to find it dynamically
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ListenAddr.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = server.listenAddress ().asIPString();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;Listen Address trapped '%s'&quot;, ListenAddr.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;NewClientCallback = ncl;
+ &nbsp; &nbsp; &nbsp; &nbsp;Server = &amp;server;
+}
+
+void CLoginServer::init (CUdpSock &amp;server, TDisconnectClientCallback dc)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// connect to the welcome service
+ &nbsp; &nbsp; &nbsp; &nbsp;connectToWS ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cfcbListenAddress (IService::getInstance()-&gt;ConfigFile.getVar(&quot;ListenAddress&quot;));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;ConfigFile.setCallback(&quot;ListenAddress&quot;, cfcbListenAddress);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch(Exception &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// if the listen addr is not in the config file, try to find it dynamically
+ &nbsp; &nbsp; &nbsp; &nbsp;if (ListenAddr.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = server.localAddr ().asIPString();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;Listen Addresss trapped '%s'&quot;, ListenAddr.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;DisconnectClientCallback = dc;
+}
+
+string CLoginServer::isValidCookie (const CLoginCookie &amp;lc)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// verify that the user was pending
+ &nbsp; &nbsp; &nbsp; &nbsp;list&lt;CPendingUser&gt;::iterator it;
+ &nbsp; &nbsp; &nbsp; &nbsp;for (it = PendingUsers.begin(); it != PendingUsers.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).Cookie == lc)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ok, it was validate, remove it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PendingUsers.erase (it);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// warn the WS that the client effectively connected
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 con = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;CC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 userid = lc.getUserId();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (userid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (con);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CUnifiedNetwork::isUsed ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send(&quot;WS&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send(&quot;WS&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return &quot;I didn't receive the cookie from WS&quot;;
+}
+
+void CLoginServer::connectToWS ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (CUnifiedNetwork::isUsed ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;addCallbackArray(WSCallbackArray5, sizeof(WSCallbackArray5)/sizeof(WSCallbackArray5[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (&quot;WS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (&quot;WS&quot;, WSCallbackArray, sizeof (WSCallbackArray) / sizeof (WSCallbackArray[0]));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage &nbsp; &nbsp; &nbsp; &nbsp;msg(&quot;UN_SIDENT&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (IService::getInstance());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint16 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ssid = IService::getInstance()-&gt;getServiceId();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string name = IService::getInstance()-&gt;getServiceShortName();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msg.serial(name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msg.serial(ssid); &nbsp; &nbsp; &nbsp; &nbsp;// serializes a 16 bits service id
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send(&quot;WS&quot;, msg);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void CLoginServer::clientDisconnected (uint32 userId)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint8 con = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;CC&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (userId);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (con);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (CUnifiedNetwork::isUsed ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send(&quot;WS&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send(&quot;WS&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// remove the user association
+ &nbsp; &nbsp; &nbsp; &nbsp;UserIdSockAssociations.erase (userId);
+}
+
+//
+// Commands
+//
+
+NLMISC_COMMAND (lsUsers, &quot;displays the list of all connected users&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Display the %d connected users :&quot;, UserIdSockAssociations.size());
+ &nbsp; &nbsp; &nbsp; &nbsp;for (map&lt;uint32, TSockId&gt;::iterator it = UserIdSockAssociations.begin(); it != UserIdSockAssociations.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;&gt; %u %s&quot;, (*it).first, (*it).second-&gt;asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;End ot the list&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND (lsPending, &quot;displays the list of all pending users&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Display the %d pending users :&quot;, PendingUsers.size());
+ &nbsp; &nbsp; &nbsp; &nbsp;for (list&lt;CPendingUser&gt;::iterator it = PendingUsers.begin(); it != PendingUsers.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;&gt; %s&quot;, (*it).Cookie.toString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;End ot the list&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+
+NLMISC_DYNVARIABLE(string, LSListenAddress, &quot;the listen address sended to the client to connect on this front_end&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = ListenAddr;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*pointer).find (&quot;:&quot;) == string::npos)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;You must set the address + port (ie: \&quot;itsalive.nevrax.org:38000\&quot;)&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if ((*pointer).empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = Server-&gt;listenAddress ().asIPString();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ListenAddr = *pointer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Listen Address trapped '%s'&quot;, ListenAddr.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+} // NLNET
+
+
+/////////////////////////////////////////////
+/////////////////////////////////////////////
+/////////////////////////////////////////////
+/*
+#include &quot;v2/service.h&quot;
+
+using namespace std;
+using namespace NLNET;
+
+void ClientConnection (TSockId from, const CLoginCookie &amp;cookie)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;player (%d) comes in&quot;, cookie.getUserId());
+ &nbsp; &nbsp; &nbsp; &nbsp;from-&gt;setAppId (cookie.getUserId());
+}
+
+void ClientDisconnection (TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;player (%d) leaves&quot;, from-&gt;appId());
+ &nbsp; &nbsp; &nbsp; &nbsp;CLoginServer::clientDisconnected (from-&gt;appId());
+
+}
+
+class CFrontEndService : public NLNET::IService
+{
+public:
+
+ &nbsp; &nbsp; &nbsp; &nbsp;/// Init the service, load the universal time.
+ &nbsp; &nbsp; &nbsp; &nbsp;void init ()
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CLoginServer::init (dynamic_cast&lt;CCallbackServer&amp;&gt;(*CNetManager::getNetBase (&quot;FES&quot;)), ClientConnection);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::getNetBase (&quot;FES&quot;)-&gt;setDisconnectionCallback (ClientDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+};
+
+
+/// Naming Service
+NLNET_SERVICE_MAIN (CFrontEndService, &quot;FES&quot;, &quot;front_end_service&quot;, 0);
+*/
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?sortby=date
new file mode 100644
index 00000000..4252cd42
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?sortby=date
@@ -0,0 +1,296 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / login_server.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>login_server.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="login_server.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Mar 26 09:44:47 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="login_server.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.15: +57 -20
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+CHANGED: unified the command format
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="login_server.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 25 09:23:07 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+CHANGED: use the new service
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="login_server.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 4 10:35:24 2002 UTC</i> (4 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +1 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+#BUGFIX: sended 2 times a message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="login_server.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jan 14 13:55:21 2002 UTC</i> (6 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +44 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+ADDED: can set the listen address manually
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="login_server.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jan 2 14:53:40 2002 UTC</i> (6 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: UDP support
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="login_server.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 15:36:14 2001 UTC</i> (6 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +66 -50
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+ADDED: udp mode for login system
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="login_server.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +2 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="login_server.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Oct 29 18:33:54 2001 UTC</i> (8 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +90 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+ADDED: compatibility with layer4
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="login_server.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Oct 26 13:51:56 2001 UTC</i> (9 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +7 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+BUGFIX: try to access to an invalid iterator
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="login_server.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:22:03 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +14 -15
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+CHANGED: new compatability with the unified network protocole
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="login_server.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Oct 4 15:45:40 2001 UTC</i> (9 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+CHANGED: name of the command
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="login_server.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Sep 5 17:19:48 2001 UTC</i> (10 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="login_server.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.4: +35 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: commands for admin
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="login_server.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 08:45:13 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Doxfix: added file desc
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="login_server.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:57:16 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +4 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+BUGFIX: forgot some c_str() and new lines
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="login_server.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:54:13 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +7 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: forgot to change v2 to nel/net
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="login_server.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/login_server.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="login_server.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:nel_0_4">nel_0_4
+<OPTION VALUE="1.16:georges_v2">georges_v2
+<OPTION VALUE="1.5:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.16:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:nel_0_4">nel_0_4
+<OPTION VALUE="1.16:georges_v2">georges_v2
+<OPTION VALUE="1.5:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.16:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.16" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/login_server.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/message.cpp?rev=1.21&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/message.cpp?rev=1.21&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..0f2922b2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/message.cpp?rev=1.21&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/message.cpp - view - 1.21</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="message.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="message.cpp?sortby=date">message.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/message.cpp?sortby=date">message.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message.cpp?rev=1.21&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message.cpp?rev=1.21','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.21</B>, <i>Wed Jul 10 17:08:24 2002 UTC</i> (2 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.20: +2 -2
+ lines</b><PRE>
+REMOVE: a warning
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file message.cpp
+ * CMessage class
+ *
+ * $Id: message.cpp,v 1.21 2002/07/10 17:08:24 lecroart Exp $
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/message.h&quot;
+
+/*#ifdef MESSAGES_PLAIN_TEXT
+#pragma message( &quot;CMessage: compiling messages as plain text&quot; )
+#else
+#pragma message( &quot;CMessage: compiling messages as binary&quot; )
+#endif*/
+
+namespace NLNET
+{
+
+bool CMessage::_DefaultStringMode = false;
+
+
+#define FormatLong 1
+#define FormatShort 0
+
+
+CMessage::CMessage (NLMISC::CStringIdArray &amp;sida, const std::string &amp;name, bool inputStream, TStreamFormat streamformat, uint32 defaultCapacity) :
+ &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CMemStream (inputStream, false, defaultCapacity),
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet (false), _SIDA (&amp;sida), _HeaderSize(0xFFFFFFFF)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init( name, streamformat );
+}
+
+CMessage::CMessage (const std::string &amp;name, bool inputStream, TStreamFormat streamformat, uint32 defaultCapacity) :
+ &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CMemStream (inputStream, false, defaultCapacity),
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet (false), _SIDA (NULL), _HeaderSize(0xFFFFFFFF)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;init( name, streamformat );
+}
+
+
+/*
+ * Utility method
+ */
+void CMessage::init( const std::string &amp;name, TStreamFormat streamformat )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( streamformat == UseDefault )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStringMode( _DefaultStringMode );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStringMode( streamformat == String );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!name.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setType (name);
+}
+
+
+CMessage::CMessage (NLMISC::CMemStream &amp;memstr) :
+ &nbsp; &nbsp; &nbsp; &nbsp;_HeaderSize(0xFFFFFFFF)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;fill (memstr.buffer (), memstr.length ());
+ &nbsp; &nbsp; &nbsp; &nbsp;uint8 LongFormat=2;
+ &nbsp; &nbsp; &nbsp; &nbsp;serial (LongFormat);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (LongFormat)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::string name;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setType (name);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CStringIdArray::TStringId id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setType (id);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/// Copy constructor
+CMessage::CMessage (const CMessage &amp;other)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;operator= (other);
+}
+
+/// Assignment operator
+CMessage &amp;CMessage::operator= (const CMessage &amp;other)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMemStream::operator= (other);
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet = other._TypeSet;
+ &nbsp; &nbsp; &nbsp; &nbsp;_SIDA = other._SIDA;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAnId = other.TypeHasAnId;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAName = other.TypeHasAName;
+ &nbsp; &nbsp; &nbsp; &nbsp;_Name = other._Name;
+ &nbsp; &nbsp; &nbsp; &nbsp;_Id = other._Id;
+ &nbsp; &nbsp; &nbsp; &nbsp;_HeaderSize = other._HeaderSize;
+ &nbsp; &nbsp; &nbsp; &nbsp;return *this;
+
+}
+
+/// Sets the message type as a number (in range 0..32767) and put it in the buffer if we are in writing mode
+void CMessage::setType (NLMISC::CStringIdArray::TStringId id)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// PATCH: the id system is not available
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// check if we already do a setType ()
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (!_TypeSet);
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't accept negative value
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (id &gt;= 0 &amp;&amp; id &lt; pow(2, sizeof (NLMISC::CStringIdArray::TStringId)*8));
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_Id = id;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAnId = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAName = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!isReading ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if they don't already serial some stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (length () == 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 format = FormatLong | (_StringMode &lt;&lt; 1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;OUT format = %hu&quot;, (uint16)format );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Force binary mode for header
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool msgmode = _StringMode;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// this value will be fill after in the callback function
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 zeroValue = 123;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (zeroValue);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (format);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// End of binary header
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = msgmode;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HeaderSize = getPos ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we set the id, now, we try to set the name if available in the sida
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_SIDA != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Name = _SIDA-&gt;getString (id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAName = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet = true;
+}
+
+/// Sets the message type as a string and put it in the buffer if we are in writing mode
+void CMessage::setType (const std::string &amp;name)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// check if we already do a setType ()
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (!_TypeSet);
+ &nbsp; &nbsp; &nbsp; &nbsp;// don't accept empty string
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (!name.empty ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_Name = name;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAnId = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAName = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!isReading ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if they don't already serial some stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (length () == 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we can send the id instead of the string, &quot;just do it&quot; (c)nike!
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//NLMISC::CStringIdArray::TStringId id = _SIDA-&gt;getId (name);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// PATCH: always send in full text
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CStringIdArray::TStringId id = -1;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Force binary mode for header
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool msgmode = _StringMode;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// this value will be fill after in the callback function
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 zeroValue = 123;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (zeroValue);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (id == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 format = FormatLong | (msgmode &lt;&lt; 1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;OUT format = %hu&quot;, (uint16)format );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (format);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// End of binary header
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = msgmode;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial ((std::string&amp;)name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint8 format = FormatShort | (msgmode &lt;&lt; 1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;OUT format = %hu&quot;, (uint16)format );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (format);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// End of binary header
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = msgmode;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (id);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Id = id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TypeHasAnId = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_HeaderSize = getPos ();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet = true;
+}
+
+/// Returns the size, in byte of the header that contains the type name of the message or the type number
+uint32 CMessage::getHeaderSize ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (!isReading ());
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_HeaderSize != 0xFFFFFFFF);
+ &nbsp; &nbsp; &nbsp; &nbsp;return _HeaderSize;
+}
+
+// The message was filled with an CMemStream, Now, we'll get the message type on this buffer
+void CMessage::readType ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (isReading ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// debug features, we number all packet to be sure that they are all sent and received
+ &nbsp; &nbsp; &nbsp; &nbsp;// \todo remove this debug feature when ok
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// we remove the message from the message
+ &nbsp; &nbsp; &nbsp; &nbsp;const uint HeaderSize = 4;
+ &nbsp; &nbsp; &nbsp; &nbsp;seek (HeaderSize, begin);
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 zeroValue;
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (zeroValue);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Force binary mode for header
+ &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint8 format;
+ &nbsp; &nbsp; &nbsp; &nbsp;serial (format);
+ &nbsp; &nbsp; &nbsp; &nbsp;//nldebug( &quot;IN format = %hu&quot;, (uint16)format );
+ &nbsp; &nbsp; &nbsp; &nbsp;bool LongFormat = (format &amp; 1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Set mode for the following of the buffer
+ &nbsp; &nbsp; &nbsp; &nbsp;_StringMode = (format &gt;&gt; 1) &amp; 1;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (LongFormat)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::string name;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setType (name);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLMISC::CStringIdArray::TStringId id;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serial (id);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setType (id);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+// Returns true if the message type was already set
+bool CMessage::typeIsSet () const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;return _TypeSet;
+}
+
+// Clear the message. With this function, you can reuse a message to create another message
+void CMessage::clear ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CMemStream::clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;_TypeSet = false;
+}
+
+/// Returns the type name in string if available. Be sure that the message have the name of the message type
+std::string CMessage::getName () const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_TypeSet &amp;&amp; TypeHasAName);
+ &nbsp; &nbsp; &nbsp; &nbsp;return _Name;
+}
+
+/// Returns the type id of this message is available.
+NLMISC::CStringIdArray::TStringId CMessage::getId () const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_TypeSet &amp;&amp; TypeHasAnId);
+ &nbsp; &nbsp; &nbsp; &nbsp;return _Id;
+}
+
+/** Returns a readable string to display it to the screen. It's only for debugging purpose!
+ * Don't use it for anything else than to debugging, the string format could change in the futur
+ */
+std::string CMessage::toString () const
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_TypeSet);
+ &nbsp; &nbsp; &nbsp; &nbsp;std::stringstream s;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (TypeHasAName &amp;&amp; TypeHasAnId) s &lt;&lt; &quot;('&quot; &lt;&lt; _Name &lt;&lt; &quot;',&quot; &lt;&lt; _Id &lt;&lt; &quot;)&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;else if (TypeHasAName) s &lt;&lt; &quot;('&quot; &lt;&lt; _Name &lt;&lt; &quot;',&quot; &lt;&lt; _SIDA-&gt;getId (_Name, true) &lt;&lt; &quot;)&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;else if (TypeHasAnId) s &lt;&lt; &quot;('&quot; &lt;&lt; _SIDA-&gt;getString (_Id) &lt;&lt; &quot;',&quot; &lt;&lt; _Id &lt;&lt; &quot;')&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;return s.str();
+}
+
+
+
+}
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?sortby=date
new file mode 100644
index 00000000..8ab3ade6
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?sortby=date
@@ -0,0 +1,196 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / message_recorder.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>message_recorder.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 21 16:37:38 2002 UTC</i> (2 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.5: +6 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+CHANGED: serial/send/receive 3 time faster
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.4: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Oct 25 12:12:03 2001 UTC</i> (9 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+ADDED multiformat mem stream
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:31:20 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+DOCFIX: change todo syntax
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 08:45:13 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+Doxfix: added file desc
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="message_recorder.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/message_recorder.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:02:01 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="message_recorder.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+Initial import of message recorder
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.3:nel_0_4">nel_0_4
+<OPTION VALUE="1.5:georges_v2">georges_v2
+<OPTION VALUE="1.3:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.3:nel_0_4">nel_0_4
+<OPTION VALUE="1.5:georges_v2">georges_v2
+<OPTION VALUE="1.3:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.6:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.6" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/message_recorder.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/naming_client.cpp?rev=1.48&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/naming_client.cpp?rev=1.48&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..8f7e28a2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/naming_client.cpp?rev=1.48&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,569 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/naming_client.cpp - view - 1.48</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="naming_client.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="naming_client.cpp?sortby=date">naming_client.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/naming_client.cpp?sortby=date">naming_client.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/naming_client.cpp?rev=1.48&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/naming_client.cpp?rev=1.48','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.48</B>, <i>Thu Jul 18 15:00:43 2002 UTC</i> (10 days, 18 hours ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.47: +15 -1
+ lines</b><PRE>
+ADDED: quit if the NS ask it
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file naming_client.cpp
+ * CNamingClient
+ *
+ * $Id: naming_client.cpp,v 1.48 2002/07/18 15:00:43 lecroart Exp $
+ *
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+//
+// Includes
+//
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/naming_client.h&quot;
+#include &quot;nel/net/callback_client.h&quot;
+#include &quot;nel/net/service.h&quot;
+
+
+//
+// Namespaces
+//
+
+using namespace std;
+using namespace NLMISC;
+
+
+namespace NLNET {
+
+//
+// Variables
+//
+
+CCallbackClient *CNamingClient::_Connection = NULL;
+CNamingClient::TRegServices CNamingClient::_RegisteredServices;
+
+static TBroadcastCallback _RegistrationBroadcastCallback = NULL;
+static TBroadcastCallback _UnregistrationBroadcastCallback = NULL;
+
+uint &nbsp; &nbsp;CNamingClient::_ThreadId = 0xFFFFFFFF;
+
+TServiceId CNamingClient::_MySId = 0;
+
+
+std::list&lt;CNamingClient::CServiceEntry&gt; CNamingClient::RegisteredServices;
+NLMISC::CMutex CNamingClient::RegisteredServicesMutex(&quot;CNamingClient::RegisteredServicesMutex&quot;);
+
+void CNamingClient::setRegistrationBroadcastCallback (TBroadcastCallback cb)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_RegistrationBroadcastCallback = cb; &nbsp; &nbsp; &nbsp; &nbsp;
+}
+
+void CNamingClient::setUnregistrationBroadcastCallback (TBroadcastCallback cb)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_UnregistrationBroadcastCallback = cb; &nbsp; &nbsp; &nbsp; &nbsp;
+}
+
+//
+
+//
+
+static bool Registered;
+static TServiceId RegisteredSuccess;
+static TServiceId RegisteredSID;
+
+static void cbRegister (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (RegisteredSuccess);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (RegisteredSuccess) msgin.serial (RegisteredSID);
+ &nbsp; &nbsp; &nbsp; &nbsp;Registered = true;
+}
+
+//
+
+static bool QueryPort;
+static uint16 QueryPortPort;
+
+static void cbQueryPort (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (QueryPortPort);
+ &nbsp; &nbsp; &nbsp; &nbsp;QueryPort = true;
+}
+
+//
+
+static bool FirstRegisteredBroadcast;
+
+void cbRegisterBroadcast (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;TServiceId size;
+ &nbsp; &nbsp; &nbsp; &nbsp;string name;
+ &nbsp; &nbsp; &nbsp; &nbsp;TServiceId sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress addr;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (size);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (TServiceId i = 0; i &lt; size; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (addr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add it in the list
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::vector&lt;CInetAddress&gt; addrs;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::find (sid, addrs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (addrs.size() == 0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.enter ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServices.push_back (CNamingClient::CServiceEntry (name, sid, addr));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.leave ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;NC: Registration Broadcast of the service %s-%hu '%s'&quot;, name.c_str(), (uint16)sid, addr.asString().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_RegistrationBroadcastCallback != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RegistrationBroadcastCallback (name, sid, addr);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (addrs.size() == 1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.enter ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (std::list&lt;CNamingClient::CServiceEntry&gt;::iterator it = CNamingClient::RegisteredServices.begin(); it != CNamingClient::RegisteredServices.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sid == (*it).SId)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*it).Name = name;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*it).Addr = addr;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.leave ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;NC: Registration Broadcast (update) of the service %s-%hu '%s'&quot;, name.c_str(), (uint16)sid, addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;FirstRegisteredBroadcast = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//CNamingClient::displayRegisteredServices ();
+}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+//
+
+void cbUnregisterBroadcast (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string name;
+ &nbsp; &nbsp; &nbsp; &nbsp;TServiceId sid;
+ &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress addr;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (name);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (addr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// remove it in the list, if the service is not found, ignore it
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.enter ();
+ &nbsp; &nbsp; &nbsp; &nbsp;for (std::list&lt;CNamingClient::CServiceEntry&gt;::iterator it = CNamingClient::RegisteredServices.begin(); it != CNamingClient::RegisteredServices.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).SId == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check the structure
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassertex ((*it).Name == name, (&quot;%s %s&quot;,(*it).Name.c_str(), name.c_str()));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassertex ((*it).Addr == addr, (&quot;%d %d&quot;,(*it).Addr.asString().c_str(), addr.asString().c_str()));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServices.erase (it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.leave ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;NC: Unregistration Broadcast of the service %s-%hu&quot;, name.c_str(), (uint16)sid);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// send the ACK to the NS
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNamingClient::_Connection-&gt;getSIDA(), &quot;ACK_UNI&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::_Connection-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// oh my god, it s my sid! but i m alive, why this f*cking naming service want to kill me? ok, i leave it alone!
+ &nbsp; &nbsp; &nbsp; &nbsp;if(CNamingClient::_MySId == sid)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Naming Service asked me to leave, I leave!&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;exit();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (_UnregistrationBroadcastCallback != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_UnregistrationBroadcastCallback (name, sid, addr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//CNamingClient::displayRegisteredServices ();
+}
+
+//
+
+static TCallbackItem NamingClientCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;RG&quot;, cbRegister },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;QP&quot;, cbQueryPort },
+
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;RGB&quot;, cbRegisterBroadcast },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;UNB&quot;, cbUnregisterBroadcast },
+};
+
+void CNamingClient::connect( const CInetAddress &amp;addr, CCallbackNetBase::TRecordingState rec )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection == NULL || _Connection != NULL &amp;&amp; !_Connection-&gt;connected ());
+ &nbsp; &nbsp; &nbsp; &nbsp;_ThreadId = getThreadId ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (_Connection == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection = new CCallbackClient( rec, &quot;naming_client.nmr&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;addCallbackArray (NamingClientCallbackArray, sizeof (NamingClientCallbackArray) / sizeof (NamingClientCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;connect (addr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// now we are connected, clear the old registered service table
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.enter ();
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServices.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::RegisteredServicesMutex.leave ();
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp;// wait the message that contains all already connected services
+
+ &nbsp; &nbsp; &nbsp; &nbsp;FirstRegisteredBroadcast = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!FirstRegisteredBroadcast &amp;&amp; _Connection-&gt;connected ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;update (-1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (1);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+void CNamingClient::disconnect ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (_Connection != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_Connection-&gt;connected ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;disconnect ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete _Connection;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection = NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// we don't call unregisterAllServices because when the naming service will see the disconnection,
+ &nbsp; &nbsp; &nbsp; &nbsp;// it'll automatically unregister all services registered by this client.
+}
+
+string CNamingClient::info ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string res;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (connected ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;res = &quot;connected to &quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;res += _Connection-&gt;remoteAddress().asString();
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;res = &quot;Not connected&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return res;
+}
+
+TServiceId CNamingClient::registerService (const std::string &amp;name, const CInetAddress &amp;addr)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_Connection-&gt;getSIDA(), &quot;RG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;std::string&amp;&gt;(name));
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;CInetAddress&amp;&gt;(addr));
+ &nbsp; &nbsp; &nbsp; &nbsp;TServiceId sid = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// wait the answer of the naming service &quot;RG&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Registered = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!Registered)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;update (-1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (1);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (RegisteredSuccess)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MySId = RegisteredSID;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RegisteredServices.insert (make_pair (RegisteredSID, name));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NC: Registered service %s-%hu at %s&quot;, name.c_str(), (uint16)RegisteredSID, addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;NC: Naming service refused to register service %s at %s&quot;, name.c_str(), addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return RegisteredSID;
+}
+
+bool CNamingClient::registerServiceWithSId (const std::string &amp;name, const CInetAddress &amp;addr, TServiceId sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_Connection-&gt;getSIDA(), &quot;RG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;std::string&amp;&gt;(name));
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;CInetAddress&amp;&gt;(addr));
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// wait the answer of the naming service &quot;RGI&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;Registered = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!Registered)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;update (-1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (1);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (RegisteredSuccess)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_MySId = sid;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RegisteredServices.insert (make_pair (RegisteredSID, name));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NC: Registered service with sid %s-%hu at %s&quot;, name.c_str(), (uint16)RegisteredSID, addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;NC: Naming service refused to register service with sid %s at %s&quot;, name.c_str(), addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return RegisteredSuccess == 1;
+}
+
+void CNamingClient::resendRegisteration (const std::string &amp;name, const CInetAddress &amp;addr, TServiceId sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_Connection-&gt;getSIDA(), &quot;RRG&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;std::string&amp;&gt;(name));
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (const_cast&lt;CInetAddress&amp;&gt;(addr));
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;send (msgout);
+}
+
+void CNamingClient::unregisterService (TServiceId sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_Connection-&gt;getSIDA(), &quot;UNI&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NC: Unregistering service %s-%hu&quot;, _RegisteredServices[sid].c_str(), sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;_RegisteredServices.erase (sid);
+}
+
+void CNamingClient::unregisterAllServices ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!_RegisteredServices.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRegServices::iterator irs = _RegisteredServices.begin();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TServiceId sid = (*irs).first;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unregisterService (sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+uint16 CNamingClient::queryServicePort ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (_Connection-&gt;getSIDA(), &quot;QP&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// wait the answer of the naming service &quot;QP&quot;
+ &nbsp; &nbsp; &nbsp; &nbsp;QueryPort = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!QueryPort)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;update (-1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (1);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;NC: Received the answer of the query port (%hu)&quot;, QueryPortPort);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return QueryPortPort;
+}
+
+bool CNamingClient::lookup (const std::string &amp;name, CInetAddress &amp;addr)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;CInetAddress&gt; addrs;
+ &nbsp; &nbsp; &nbsp; &nbsp;find (name, addrs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (addrs.size()==0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (addrs.size()==1);
+ &nbsp; &nbsp; &nbsp; &nbsp;addr = addrs[0];
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+bool CNamingClient::lookup (TServiceId sid, CInetAddress &amp;addr)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;CInetAddress&gt; addrs;
+ &nbsp; &nbsp; &nbsp; &nbsp;find (sid, addrs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (addrs.size()==0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (addrs.size()==1);
+ &nbsp; &nbsp; &nbsp; &nbsp;addr = addrs[0];
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+/// \todo ace: now the lookupAlternate doesn't say to the naming service that this addr is bad so the NS can't remove it from his list. find a solution
+bool CNamingClient::lookupAlternate (const std::string &amp;name, CInetAddress &amp;addr)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// remove it from his local list
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;RegisteredServicesMutex.enter ();
+ &nbsp; &nbsp; &nbsp; &nbsp;for (std::list&lt;CServiceEntry&gt;::iterator it = RegisteredServices.begin(); it != RegisteredServices.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).Addr == addr)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RegisteredServices.erase (it);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;RegisteredServicesMutex.leave ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;vector&lt;CInetAddress&gt; addrs;
+ &nbsp; &nbsp; &nbsp; &nbsp;find (name, addrs);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (addrs.size()==0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (addrs.size()==1);
+ &nbsp; &nbsp; &nbsp; &nbsp;addr = addrs[0];
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+void CNamingClient::lookupAll (const std::string &amp;name, std::vector&lt;CInetAddress&gt; &amp;addrs)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;find (name, addrs);
+}
+
+bool CNamingClient::lookupAndConnect (const std::string &amp;name, CCallbackClient &amp;sock)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (_Connection != NULL &amp;&amp; _Connection-&gt;connected ());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// look up for service
+ &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress servaddr;
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// if service not found, return false
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!CNamingClient::lookup (name, servaddr))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;do
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// try to connect to the server
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sock.connect (servaddr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connection succeeded
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (ESocketConnectionFailed &amp;e)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;Connection to %s failed: %s, tring another service if available&quot;, servaddr.asString().c_str(), e.what() );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// try another server and if service is not found, return false
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!CNamingClient::lookupAlternate (name, servaddr))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;while (true);
+}
+
+
+
+void CNamingClient::update ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;checkThreadId ();
+ &nbsp; &nbsp; &nbsp; &nbsp;// get message for naming service (new registration for example)
+ &nbsp; &nbsp; &nbsp; &nbsp;if (_Connection != NULL &amp;&amp; _Connection-&gt;connected ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Connection-&gt;update ();
+}
+
+void CNamingClient::checkThreadId ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (getThreadId () != _ThreadId)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;You try to access to the CNamingClient with 2 differents thread (%d and %d)&quot;, _ThreadId, getThreadId());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+//
+// Commands
+//
+
+NLMISC_COMMAND(services, &quot;displays registered services&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Display the %d registered services :&quot;, CNamingClient::getRegisteredServices().size());
+ &nbsp; &nbsp; &nbsp; &nbsp;for (std::list&lt;CNamingClient::CServiceEntry&gt;::const_iterator it = CNamingClient::getRegisteredServices().begin(); it != CNamingClient::getRegisteredServices().end(); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot; &gt; %s-%hu '%s'&quot;, (*it).Name.c_str(), (uint16)(*it).SId, (*it).Addr.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;End ot the list&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?sortby=date
new file mode 100644
index 00000000..efb85fa6
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?sortby=date
@@ -0,0 +1,356 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / net_manager.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>net_manager.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 4 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.21: +4 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 10 10:11:33 2002 UTC</i> (7 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+ADDED: use of htimer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jan 22 14:09:31 2002 UTC</i> (6 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.19: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+ADDED: info string
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jan 15 13:36:42 2002 UTC</i> (6 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+CHANGED: put nlsleep(1)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +4 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +17 -17
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +5 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Sep 6 09:15:58 2001 UTC</i> (10 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.13: +9 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+CHANGED: rulez of update
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 30 17:07:36 2001 UTC</i> (10 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +60 -52
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+CHANGED: update procedure and time sync
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 27 08:24:57 2001 UTC</i> (13 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +55 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+ADDED: stat information (send/receive bytes)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jun 21 12:33:26 2001 UTC</i> (13 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+ADDED: nlassert when sockid is invalid and destroy the structure on the dtor
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:06:26 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +17 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+Added layer 4 support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 12:10:34 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+#BUGFIX: update namingclient only if connected
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 12 15:41:19 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+CHANGED: the update policy (look service.dxt for more info)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 5 15:36:38 2001 UTC</i> (13 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +32 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+ADDED: connect the UpdateTimout to the layer3
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 18 14:40:20 2001 UTC</i> (14 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +9 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADDED: new delete callbacknetbase in the release method
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 17 15:36:45 2001 UTC</i> (14 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+#Typos
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 16 16:21:04 2001 UTC</i> (14 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +21 -12
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+ADDED: autoRetry in the addClient. connection retry every 5 seconds
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 10 08:13:44 2001 UTC</i> (14 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +5 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+BUGFIX: now, dis/connection callback gives a good sockid
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 4 14:44:29 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +16 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADDED: register with sid
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="net_manager.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/net_manager.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="net_manager.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.14:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.14:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.22:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.14:nel_0_4">nel_0_4
+<OPTION VALUE="1.20:georges_v2">georges_v2
+<OPTION VALUE="1.14:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.22:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.22" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/net_manager.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/service.cpp?rev=1.136&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/service.cpp?rev=1.136&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..c4f12e9a
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/service.cpp?rev=1.136&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,1475 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/service.cpp - view - 1.136</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="service.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="service.cpp?sortby=date">service.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/service.cpp?sortby=date">service.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/service.cpp?rev=1.136&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/service.cpp?rev=1.136','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.136</B>, <i>Thu Jul 18 15:01:14 2002 UTC</i> (10 days, 19 hours ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>Changes since <b>1.135: +18 -1
+ lines</b><PRE>
+ADDED: exit and freeze
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file service.cpp
+ * Base class for all network services
+ *
+ * $Id: service.cpp,v 1.136 2002/07/18 15:01:14 lecroart Exp $
+ *
+ * \todo ace: test the signal redirection on Unix
+ * \todo ace: add parsing command line (with CLAP?)
+ */
+
+/* Copyright, 2001 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#ifdef NL_OS_WINDOWS
+
+//
+// Includes
+//
+
+// these defines is for IsDebuggerPresent(). it'll not compile on windows 95
+// just comment this and the IsDebuggerPresent to compile on windows 95
+# &nbsp; &nbsp; &nbsp; define _WIN32_WINDOWS &nbsp; &nbsp; &nbsp; &nbsp;0x0410
+# &nbsp; &nbsp; &nbsp; define WINVER &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0400
+# &nbsp; &nbsp; &nbsp; include &lt;windows.h&gt;
+# &nbsp; &nbsp; &nbsp; include &lt;direct.h&gt;
+
+#elif defined NL_OS_UNIX
+
+# &nbsp; &nbsp; &nbsp; include &lt;unistd.h&gt;
+
+#endif
+
+#include &lt;stdlib.h&gt;
+#include &lt;signal.h&gt;
+
+#include &quot;nel/misc/config_file.h&quot;
+#include &quot;nel/misc/displayer.h&quot;
+#include &quot;nel/misc/mutex.h&quot;
+#include &quot;nel/misc/window_displayer.h&quot;
+#include &quot;nel/misc/gtk_displayer.h&quot;
+#include &quot;nel/misc/win_displayer.h&quot;
+#include &quot;nel/misc/path.h&quot;
+#include &quot;nel/misc/hierarchical_timer.h&quot;
+
+#include &quot;nel/net/naming_client.h&quot;
+#include &quot;nel/net/service.h&quot;
+#include &quot;nel/net/unified_network.h&quot;
+#include &quot;nel/net/net_manager.h&quot;
+#include &quot;nel/net/net_displayer.h&quot;
+
+#include &quot;nel/misc/hierarchical_timer.h&quot;
+
+
+//
+// Namespace
+//
+
+using namespace std;
+using namespace NLMISC;
+
+
+namespace NLNET
+{
+
+
+//
+// Constants
+//
+
+static const sint Signal[] = {
+ &nbsp;SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM
+};
+
+static const char *SignalName[]=
+{
+ &nbsp;&quot;SIGABRT&quot;, &quot;SIGFPE&quot;, &quot;SIGILL&quot;, &quot;SIGINT&quot;, &quot;SIGSEGV&quot;, &quot;SIGTERM&quot;
+};
+
+
+//
+// Variables
+//
+
+
+// class static member
+IService &nbsp; &nbsp; &nbsp; &nbsp;*IService::_Instance = NULL;
+
+static sint ExitSignalAsked = 0;
+
+// services stat
+static sint32 NetSpeedLoop, UserSpeedLoop;
+
+// this is the thread that initialized the signal redirection
+// we ll ignore other thread signals
+static uint SignalisedThread;
+
+static CFileDisplayer fd;
+static CNetDisplayer commandDisplayer(false);
+static CLog commandLog;
+
+
+//
+// Callback managing
+//
+
+void AESConnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// established a connection to the AES, identify myself
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Sends the identification message with the name of the service and all commands available on this service
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AES&quot;), &quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (IService::getInstance()-&gt;_AliasName, IService::getInstance()-&gt;_ShortName, IService::getInstance()-&gt;_LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;ICommand::serialCommands (msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (IService::getInstance()-&gt;_Initialized)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (CNetManager::getSIDA (&quot;AES&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout2);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add the displayer to the standard logger
+ &nbsp; &nbsp; &nbsp; &nbsp;CCallbackClient *client = dynamic_cast&lt;CCallbackClient *&gt;(CNetManager::getNetBase(&quot;AES&quot;));
+ &nbsp; &nbsp; &nbsp; &nbsp;commandDisplayer.setLogServer (client);
+ &nbsp; &nbsp; &nbsp; &nbsp;commandLog.addDisplayer (&amp;commandDisplayer);
+}
+
+void AESConnection5 (const string &amp;serviceName, uint16 sid, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// established a connection to the AES, identify myself
+
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp;// Sends the identification message with the name of the service and all commands available on this service
+ &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;SID&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (IService::getInstance()-&gt;_AliasName, IService::getInstance()-&gt;_ShortName, IService::getInstance()-&gt;_LongName);
+ &nbsp; &nbsp; &nbsp; &nbsp;ICommand::serialCommands (msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send(&quot;AES&quot;, msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (IService::getInstance()-&gt;_Initialized)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout2 (&quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send(&quot;AES&quot;, msgout2);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add the displayer to the standard logger
+ &nbsp; &nbsp; &nbsp; &nbsp;TSockId &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hid;
+ &nbsp; &nbsp; &nbsp; &nbsp;CCallbackClient *client = dynamic_cast&lt;CCallbackClient *&gt;(CUnifiedNetwork::getInstance()-&gt;getNetBase(&quot;AES&quot;, hid));
+ &nbsp; &nbsp; &nbsp; &nbsp;commandDisplayer.setLogServer (client);
+ &nbsp; &nbsp; &nbsp; &nbsp;commandLog.addDisplayer (&amp;commandDisplayer);
+}
+
+static void AESDisconnection (const string &amp;serviceName, TSockId from, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;commandLog.removeDisplayer (&amp;commandDisplayer);
+}
+
+
+static void AESDisconnection5 (const std::string &amp;serviceName, uint16 sid, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;commandLog.removeDisplayer (&amp;commandDisplayer);
+}
+
+
+static void cbExecCommand (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;ICommand::execute (command, commandLog);
+}
+
+static void cbExecCommand5 (CMessage &amp;msgin, const std::string &amp;serviceName, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string command;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (command);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;ICommand::execute (command, commandLog);
+}
+
+
+// if we receive the stop service, we try to exit now
+static void cbStopService (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = 0xFFFF;
+}
+
+static void cbStopService5 (CMessage &amp;msgin, const std::string &amp;serviceName, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = 0xFFFF;
+}
+
+
+// layer4
+static TCallbackItem AESCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand },
+};
+
+// layer 5
+static TUnifiedCallbackItem AESCallbackArray5[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;STOPS&quot;, cbStopService5 },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;EXEC_COMMAND&quot;, cbExecCommand5 },
+};
+
+//
+// Signals managing
+//
+
+// This function is called when a signal comes
+static void sigHandler(int Sig)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// redirect the signal for the next time
+ &nbsp; &nbsp; &nbsp; &nbsp;signal(Sig, sigHandler);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// find the signal
+ &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; (int)(sizeof(Signal)/sizeof(Signal[0])); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (Sig == Signal[i])
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (getThreadId () != SignalisedThread)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;Not the main thread received the signal (%s, %d), ignore it&quot;, SignalName[i],Sig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Signal %s (%d) received&quot;, SignalName[i], Sig);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch (Sig)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case SIGABRT :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case SIGILL &nbsp;:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case SIGINT &nbsp;:
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case SIGSEGV :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case SIGTERM :
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// you should not call a function and system function like printf in a SigHandle because
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// signal-handler routines are usually called asynchronously when an interrupt occurs.
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ExitSignalAsked == 0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = Sig;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Signal already received, launch the brutal exit&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Unknown signal received (%d)&quot;, Sig);
+}
+
+// Initialise the signal redirection
+static void initSignal()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;SignalisedThread = getThreadId ();
+#ifdef NL_DEBUG
+ &nbsp; &nbsp; &nbsp; &nbsp;// in debug mode, we only trap the SIGINT signal
+ &nbsp; &nbsp; &nbsp; &nbsp;signal(Signal[3], sigHandler);
+ &nbsp; &nbsp; &nbsp; &nbsp;//nldebug(&quot;Signal : %s (%d) trapped&quot;, SignalName[3], Signal[3]);
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp;// in release, redirect all signals
+/* don't redirect now because to hard to debug...
+ &nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; (int)(sizeof(Signal)/sizeof(Signal[0])); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;signal(Signal[i], sigHandler);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug(&quot;Signal %s (%d) trapped&quot;, SignalName[i], Signal[i]);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+#endif
+}
+
+//
+// Class implementation
+//
+
+// Ctor
+IService::IService() :
+ &nbsp; &nbsp; &nbsp; &nbsp;_Initialized(false), WindowDisplayer(NULL), _UpdateTimeout(100), _Port(0), _RecordingState(CCallbackNetBase::Off), _SId(0), _Status(0), _IsService5(false), _ResetMeasures(false)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// Singleton
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( _Instance == NULL );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_Instance = this;
+}
+
+
+
+bool IService::haveArg (char argName)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; _Args.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_Args[i].size() &gt;= 2 &amp;&amp; _Args[i][0] == '-')
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_Args[i][1] == argName)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return false;
+}
+
+string IService::getArg (char argName)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint32 i = 0; i &lt; _Args.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_Args[i].size() &gt;= 2 &amp;&amp; _Args[i][0] == '-')
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_Args[i][1] == argName)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return _Args[i].substr(2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;throw Exception (&quot;Parameter '-%c' is not found in command line&quot;, argName);
+}
+
+
+void IService::setArgs (const char *args)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_Args.push_back (&quot;&lt;ProgramName&gt;&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string sargs (args);
+ &nbsp; &nbsp; &nbsp; &nbsp;sint pos1 = 0, pos2 = 0;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;do
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pos1 = sargs.find_first_not_of (&quot; &quot;, pos2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (pos1 == string::npos) break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pos2 = sargs.find_first_of (&quot; &quot;, pos1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Args.push_back (sargs.substr (pos1, pos2-pos1));
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;while (pos2 != string::npos);
+}
+
+void IService::setArgs (int argc, const char **argv)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; argc; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Args.push_back (argv[i]);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+/*
+ * Returns a pointer to the CCallbackServer object
+ */
+CCallbackServer *IService::getServer()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return dynamic_cast&lt;CCallbackServer*&gt;(CNetManager::getNetBase(IService::_ShortName));
+}
+
+
+
+void cbLogFilter (CConfigFile::CVar &amp;var)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CLog *log = NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (var.Name == &quot;NegFiltersDebug&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log = DebugLog;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Updating negative filter on debug from config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else if (var.Name == &quot;NegFiltersInfo&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log = InfoLog;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Updating negative filter on info from config file&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// remove all old filter from configfile
+ &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar &amp;oldvar = IService::getInstance()-&gt;ConfigFile.getVar (var.Name);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint j = 0; j &lt; oldvar.size(); j++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log-&gt;removeFilter (oldvar.asString(j).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add all new filter from configfile
+ &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; var.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log-&gt;addNegativeFilter (var.asString(i).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+
+
+
+
+
+
+//
+// The main function of the service
+//
+
+sint IService::main (const char *serviceShortName, const char *serviceLongName, uint16 servicePort, const char *configDir, const char *logDir)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;bool userInitCalled = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;bool resyncEvenly = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar *var = NULL;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the path where to run the service if any in the command line
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('A'))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RunningPath = CPath::standardizePath(getArg('A'));
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_chdir (_RunningPath.c_str());
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;chdir (_RunningPath.c_str());
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Init parameters
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ConfigDir = CPath::standardizePath(configDir);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LogDir = CPath::standardizePath(logDir);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ShortName = serviceShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LongName = serviceLongName;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Init debug/log stuffs (must be first things otherwise we can't log if errors)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the log dir if any in the command line
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('L'))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_LogDir = CPath::standardizePath(getArg('L'));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the config file dir if any in the command line
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('C'))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ConfigDir = CPath::standardizePath(getArg('C'));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;createDebug (_LogDir.c_str(), false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;NETL&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we create the log with service name filename (&quot;test_service.log&quot; for example)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fd.setParam (_LogDir + _LongName + &quot;.log&quot;, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addDisplayer (&amp;fd);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoLog-&gt;addDisplayer (&amp;fd);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLog-&gt;addDisplayer (&amp;fd);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssertLog-&gt;addDisplayer (&amp;fd);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ErrorLog-&gt;addDisplayer (&amp;fd);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Init the hierarchical timer
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::startBench(false, true);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Load the config file
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigFile.load (_ConfigDir + _LongName + &quot;.cfg&quot;);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Set the negatif filter from the config file
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;NegFiltersDebug&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigFile.setCallback (&quot;NegFiltersDebug&quot;, cbLogFilter);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; var-&gt;size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (var-&gt;asString(i).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;NegFiltersInfo&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConfigFile.setCallback (&quot;NegFiltersInfo&quot;, cbLogFilter);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; var-&gt;size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoLog-&gt;addNegativeFilter (var-&gt;asString(i).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Create the window if neeeded
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;WindowStyle&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string disp = var-&gt;asString ();
+#ifdef NL_USE_GTK
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (disp == &quot;GTK&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer = new CGtkDisplayer (&quot;DEFAULT_WD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif // NL_USE_GTK
+
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (disp == &quot;WIN&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer = new CWinDisplayer (&quot;DEFAULT_WD&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif // NL_OS_WINDOWS
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer == NULL &amp;&amp; disp != &quot;NONE&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Unknown value for the WindowStyle (should be GTK, WIN or NONE), use no window displayer&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;vector &lt;pair&lt;string,uint&gt; &gt; displayedVariables;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//uint speedNetLabel, speedUsrLabel, rcvLabel, sndLabel, rcvQLabel, sndQLabel, scrollLabel;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Init window param if necessary
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint x=-1, y=-1, w=-1, h=-1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool iconified = false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;XWinParam&quot;)) != NULL) x = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;YWinParam&quot;)) != NULL) y = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;WWinParam&quot;)) != NULL) w = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;HWinParam&quot;)) != NULL) h = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;HWinParam&quot;)) != NULL) iconified = var-&gt;asInt() == 1;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('I')) iconified = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (w == -1 &amp;&amp; h == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer-&gt;create (string(&quot;*INIT* &quot;) + _ShortName + &quot; &quot; + _LongName, iconified, x, y);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer-&gt;create (string(&quot;*INIT* &quot;) + _ShortName + &quot; &quot; + _LongName, iconified, x, y, w, h);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoLog-&gt;addDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLog-&gt;addDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ErrorLog-&gt;addDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssertLog-&gt;addDisplayer (WindowDisplayer);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// adding default displayed variables
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;NetLop|NetSpeedLoop&quot;), WindowDisplayer-&gt;createLabel (&quot;NetLop&quot;)));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;UsrLop|UserSpeedLoop&quot;), WindowDisplayer-&gt;createLabel (&quot;UsrLop&quot;)));
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;Rcv|ReceivedBytes&quot;), WindowDisplayer-&gt;createLabel (&quot;Rcv&quot;)));
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;Snd|SentBytes&quot;), WindowDisplayer-&gt;createLabel (&quot;Snd&quot;)));
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;RcvQ|ReceivedQueueSize&quot;), WindowDisplayer-&gt;createLabel (&quot;RcvQ&quot;)));
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;SndQ|SentQueueSize&quot;), WindowDisplayer-&gt;createLabel (&quot;SndQ&quot;)));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(string(&quot;|Scroller&quot;), WindowDisplayer-&gt;createLabel (&quot;NeL Rulez&quot;)));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::CVar *v = ConfigFile.getVarPtr(&quot;DisplayedVariables&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (v != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; v-&gt;size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayedVariables.push_back(make_pair(v-&gt;asString(i), WindowDisplayer-&gt;createLabel (v-&gt;asString(i).c_str())));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Starting Service %d '%s' using NeL (&quot;__DATE__&quot; &quot;__TIME__&quot;)&quot;, isService5()?5:4, _ShortName.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_SUCCESS);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Redirect signal if needed (in release mode only)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+#ifdef NL_OS_WINDOWS
+#ifdef NL_RELEASE
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initSignal();
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// don't install signal is the application is started in debug mode
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (IsDebuggerPresent ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nlinfo(&quot;Running with the debugger, don't redirect signals&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initSignal();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//nlinfo(&quot;Running without the debugger, redirect SIGINT signal&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initSignal();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+#else // NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;initSignal();
+#endif
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Ignore SIGPIPE (broken pipe) on unix system
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Ignore the SIGPIPE signal
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sigset_t SigList;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool IgnoredPipe = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sigemptyset (&amp;SigList) == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;perror(&quot;sigemptyset()&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoredPipe = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sigaddset (&amp;SigList, SIGPIPE) == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;perror(&quot;sigaddset()&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoredPipe = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sigprocmask (SIG_BLOCK, &amp;SigList, NULL) == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;perror(&quot;sigprocmask()&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IgnoredPipe = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;SIGPIPE %s&quot;, IgnoredPipe?&quot;Ignored&quot;:&quot;Not Ignored&quot;);
+#endif // NL_OS_UNIX
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Initialize the network system
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string localhost;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Initialize WSAStartup and network stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSock::initNetwork();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the localhost name
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;localhost = CInetAddress::localHost().hostName();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (NLNET::ESocket &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;localhost = &quot;&lt;UnknownHost&gt;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Set the localhost name and service name to the logger
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string processName = localhost;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;processName += '/';
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;processName += _ShortName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CLog::setProcessName (processName);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Initialize server parameters
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Get the port from config file or in the macro (overload the port set by the user init())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr(&quot;Port&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the listen port with the value in the config file if any
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Port = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the listen port with the value in the NLNET_SERVICE_MAIN macro
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Port = servicePort;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the listen port if there are a port arg in the command line
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('P'))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Port = atoi(getArg('P').c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// set the aliasname if is present in the command line
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (haveArg('N'))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_AliasName = getArg('N');
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Load the recording state from the config file
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;Rec&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string srecstate = var-&gt;asString();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strupr( srecstate );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( srecstate == &quot;RECORD&quot; )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RecordingState = CCallbackNetBase::Record;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;Service recording messages&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if ( srecstate == &quot;REPLAY&quot; )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RecordingState = CCallbackNetBase::Replay;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;Service replaying messages&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RecordingState = CCallbackNetBase::Off;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Not found
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_RecordingState = CCallbackNetBase::Off;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Load the default stream format
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;StringMsgFormat&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage::setDefaultStringMode( var-&gt;asInt() == 1 );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Not found =&gt; binary
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage::setDefaultStringMode( false );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Layer4 Startup (Connect to the Naming Service (except for the NS itself and Login Service))
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (IService::_ShortName != &quot;NS&quot; &amp;&amp; IService::_ShortName != &quot;LS&quot; &amp;&amp; IService::_ShortName != &quot;AES&quot; &amp;&amp; IService::_ShortName != &quot;AS&quot;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (!ok)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// read the naming service address from the config file
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress loc(ConfigFile.getVar(&quot;NSHost&quot;).asString(), ConfigFile.getVar(&quot;NSPort&quot;).asInt());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::init( &amp;loc, _RecordingState );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (ESocketConnectionFailed &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Could not connect to the Naming Service (%s). Retrying in a few seconds...&quot;, loc.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (5000);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::init( NULL, _RecordingState );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// Layer5 Startup
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;///
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get the sid
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;SId&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint32 sid = var-&gt;asInt();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sid&lt;0 || sid&gt;255)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning(&quot;Bad SId value in the config file, %d is not in [0;255] range&quot;, sid);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_SId = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_SId = (uint8) sid;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ok, SId not found, use dynamic sid
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_SId = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// look if we don't want to use NS
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;DontUseNS&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we set the value in the config file, get it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_DontUseNS = var-&gt;asInt() == 1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if not, we use ns only if service is not ns, ls, aes, as
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_DontUseNS = (_ShortName == &quot;NS&quot; || _ShortName == &quot;LS&quot; || _ShortName == &quot;AES&quot; || _ShortName == &quot;AS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// normal setup for the common services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!_DontUseNS)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bool ok = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (!ok)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// read the naming service address from the config file
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string LSAddr = ConfigFile.getVar (&quot;NSHost&quot;).asString();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if there's no port to the NS, use the default one 50000
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (LSAddr.find(&quot;:&quot;) == string::npos)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LSAddr += &quot;:50000&quot;;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress loc(LSAddr);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;init (&amp;loc, _RecordingState, _ShortName, _Port, _SId);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::init( &amp;loc, _RecordingState );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ok = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (ESocketConnectionFailed &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Could not connect to the Naming Service (%s). Retrying in a few seconds...&quot;, loc.asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep (5000);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;init(NULL, _RecordingState, _ShortName, _Port, _SId);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::init( NULL, _RecordingState );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Connect to the local AES and send identification
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// look if we don't want to use NS
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;DontUseAES&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if we set the value in the config file, get it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_DontUseAES = var-&gt;asInt() == 1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if not, we use aes only if service is not aes or as
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_DontUseAES = (_ShortName == &quot;AES&quot; || _ShortName == &quot;AS&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!_DontUseAES)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;setServiceUpCallback (&quot;AES&quot;, AESConnection5, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;setServiceDownCallback (&quot;AES&quot;, AESDisconnection5, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;addService (&quot;AES&quot;, CInetAddress(&quot;localhost:49997&quot;), false);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;addCallbackArray (AESCallbackArray5, sizeof(AESCallbackArray5)/sizeof(AESCallbackArray5[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setConnectionCallback (&quot;AES&quot;, AESConnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::setDisconnectionCallback (&quot;AES&quot;, AESDisconnection, NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addClient (&quot;AES&quot;, &quot;localhost:49997&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (&quot;AES&quot;, AESCallbackArray, sizeof(AESCallbackArray)/sizeof(AESCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add callback array
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// add callback set in the NLNET_SERVICE_MAIN macro
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NLNET::CUnifiedNetwork::getInstance()-&gt;addCallbackArray(_CallbackArray5, _CallbackArraySize);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addServer (_ShortName, _Port, _SId);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::addCallbackArray (_ShortName, _CallbackArray, _CallbackArraySize);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Now we have the service id, we can set the entites id generator
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_NextEntityId.setServiceId(_SId);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call the user service init
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;userInitCalled = true; // the bool must be put *before* the call to init()
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;init ();
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Connects to the present services
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// WARNING: only after the user init() was called because the
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// addService may call up service callbacks.
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;connect();
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// On Unix system, the service fork itself to give back the hand to the shell
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// note: we don't forking anymore because it doesn't work with thread system
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+#ifdef NL_OS_UNIX
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;Forking the service&quot; );
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int pid = fork();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/// \todo ace: when we fork() on linux, the father process tries to release threads but it should not, so we have to find a solution
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (pid == -1)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;Couldn't fork the service&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (pid != 0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// It's the father, return the hand to the shell.
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit(EXIT_SUCCESS);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/
+#endif // NL_OS_UNIX
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Say to the AES that the service is ready
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!_DontUseAES)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the ready message (service init finished)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;send(&quot;AES&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the ready message (service init finished)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (CNetManager::getSIDA (&quot;AES&quot;), &quot;SR&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::send (&quot;AES&quot;, msgout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Add default pathes
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;Paths&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; var-&gt;size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CPath::addSearchPath (var-&gt;asString(i));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Initialized = true;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service initialised&quot;);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call the user command from the config file if any
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((var = ConfigFile.getVarPtr (&quot;StartCommands&quot;)) != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint i = 0; i &lt; var-&gt;size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ICommand::execute (var-&gt;asString(i), *InfoLog);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service ready&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer-&gt;setTitleBar (_ShortName + &quot; &quot; + _LongName);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call the user service update each loop and check files and network activity
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;do
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_BEFORE(NLNETServiceLoop);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// count the amount of time to manage internal system
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime bbefore = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// call the user update and exit if the user update asks it
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_BEFORE(NLNETServiceUpdate);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!update ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceUpdate);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceLoop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceUpdate);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// count the amount of time to manage internal system
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime before = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// update the window displayer and quit if asked
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!WindowDisplayer-&gt;update ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = true;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// stop the loop if the exit signal asked
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ExitSignalAsked)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceLoop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CConfigFile::checkConfigFiles ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CFile::checkFileChange();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_BEFORE(NLNETServiceManageMessages);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get and manage layer 5 messages
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;update (_UpdateTimeout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// get and manage layer 4 messages
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::update (_UpdateTimeout);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceManageMessages);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// resync the clock every hours
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (resyncEvenly)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static TTime LastSyncTime = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//---------------------------------------
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// To simulate Ctrl-C in the debugger... Exit after 1 min !
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*if (CTime::getLocalTime () - LastSyncTime &gt; 60 * 1000 )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = 1;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//---------------------------------------
+/*
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (CTime::getLocalTime () - LastSyncTime &gt; 60*60*1000)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUniTime::syncUniTimeFromService ( _RecordingState );
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LastSyncTime = CTime::getLocalTime ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NetSpeedLoop = (sint32) (CTime::getLocalTime () - before);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UserSpeedLoop = (sint32) (before - bbefore);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint64 rcv, snd, rcvq, sndq;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rcv = CUnifiedNetwork::getInstance()-&gt;getBytesReceived ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;snd = CUnifiedNetwork::getInstance()-&gt;getBytesSent ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rcvq = CUnifiedNetwork::getInstance()-&gt;getReceiveQueueSize ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sndq = CUnifiedNetwork::getInstance()-&gt;getSendQueueSize ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rcv = CNetManager::getBytesReceived ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;snd = CNetManager::getBytesSent ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rcvq = CNetManager::getReceiveQueueSize ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sndq = CNetManager::getSendQueueSize ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string str;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CLog log;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMemDisplayer md;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.addDisplayer (&amp;md);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; displayedVariables.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// it s a separator, do nothing
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (displayedVariables[i].first.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// it s a command, do nothing
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (displayedVariables[i].first[0] == '@')
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string dispName = displayedVariables[i].first;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string varName = dispName;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint pos = dispName.find(&quot;|&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (pos != string::npos)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;varName = displayedVariables[i].first.substr(pos+1);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dispName = displayedVariables[i].first.substr(0, pos);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (dispName.empty())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str = dispName + &quot;: &quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;md.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ICommand::execute(varName, log, true);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const std::deque&lt;std::string&gt; &nbsp; &nbsp; &nbsp; &nbsp;&amp;strs = md.lockStrings();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (strs.size()&gt;0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint pos = strs[0].find(&quot;=&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(pos != string::npos &amp;&amp; pos + 2 &lt; (sint)strs[0].size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sint pos2 = string::npos;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(strs[0][strs[0].size()-1] == '\n')
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pos2 = strs[0].size() - pos - 2 - 1;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str += strs[0].substr (pos+2, pos2);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str += &quot;???&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;md.unlockStrings();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer-&gt;setLabel (displayedVariables[i].second, str);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;SYNC: updatetimeout must be %d and is %d, sleep the rest of the time&quot;, _UpdateTimeout, delta);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;H_AFTER(NLNETServiceLoop);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Resetting the hierarchical timer must be done outside the top-level timer
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( _ResetMeasures )
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::clear();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ResetMeasures = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (true);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (EFatalError &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Somebody call nlerror, so we have to quit now, the message already display
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// so we don't have to to anything
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch ( uint ) // SEH exceptions
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ErrorLog-&gt;displayNL( &quot;System exception&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef NL_RELEASE
+/* &nbsp; &nbsp; &nbsp;// in release mode, we catch everything to handle clean release.
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;e)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Catch NeL exception to release the system cleanly
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;ERROR: NeL Exception: Error running the service \&quot;%s\&quot;: %s&quot;, _ShortName.c_str(), e.what());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (...)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Catch anything we can to release the system cleanly
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;ERROR: Unknown external exception&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp;try
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service starts releasing&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Call the user service release() if the init() was called
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (userInitCalled)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;release ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Delete all network connection (naming client also)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (isService5())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;release ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNetManager::release ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CSock::releaseNetwork ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Remove the window displayer
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (WindowDisplayer != NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;removeDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;InfoLog-&gt;removeDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WarningLog-&gt;removeDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ErrorLog-&gt;removeDisplayer (WindowDisplayer);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssertLog-&gt;removeDisplayer (WindowDisplayer);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete WindowDisplayer;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WindowDisplayer = NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service released succesfuly&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (EFatalError &amp;)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Somebody call nlerror, so we have to quit now, the message already display
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// so we don't have to to anything
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef NL_RELEASE
+/* &nbsp; &nbsp; &nbsp;// in release mode, we catch everything to handle clean release.
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (Exception &amp;e)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;ERROR: NeL Exception: Error releasing the service \&quot;%s\&quot;: %s&quot;, _ShortName.c_str(), e.what());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;catch (...)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Catch anything we can to release the system cleanly
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setStatus (EXIT_FAILURE);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;ERROR: Unknown external exception&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+*/
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::endBench();
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::display();
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::displayByExecutionPath ();
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::displayHierarchical(InfoLog, true, 64);
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::displayHierarchicalByExecutionPathSorted (InfoLog, CHTimer::TotalTime, true, 64);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service ends&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return ExitSignalAsked?100+ExitSignalAsked:getStatus ();
+}
+
+void IService::exit (sint code)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = code;
+}
+
+/*
+ * Require to reset the hierarchical timer
+ */
+void IService::requireResetMeasures()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;_ResetMeasures = true;
+}
+
+
+//
+// Commands and Variables for controling all services
+//
+
+NLMISC_VARIABLE(sint32, NetSpeedLoop, &quot;duration of the last network loop (in ms)&quot;);
+NLMISC_VARIABLE(sint32, UserSpeedLoop, &quot;duration of the last user loop (in ms)&quot;);
+
+NLMISC_DYNVARIABLE(uint64, ReceivedBytes, &quot;total of bytes received by this service&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// we can only read the value
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = IService::getInstance()-&gt;isService5()?CUnifiedNetwork::getInstance()-&gt;getBytesReceived ():CNetManager::getBytesReceived ();
+}
+
+NLMISC_DYNVARIABLE(uint64, SentBytes, &quot;total of bytes sent by this service&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// we can only read the value
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = IService::getInstance()-&gt;isService5()?CUnifiedNetwork::getInstance()-&gt;getBytesSent ():CNetManager::getBytesSent ();
+}
+
+NLMISC_DYNVARIABLE(uint64, ReceivedQueueSize, &quot;current size in bytes of the received queue size&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// we can only read the value
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = IService::getInstance()-&gt;isService5()?CUnifiedNetwork::getInstance()-&gt;getReceiveQueueSize ():CNetManager::getReceiveQueueSize ();
+}
+
+NLMISC_DYNVARIABLE(uint64, SentQueueSize, &quot;current size in bytes of the sent queue size&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// we can only read the value
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = IService::getInstance()-&gt;isService5()?CUnifiedNetwork::getInstance()-&gt;getSendQueueSize ():CNetManager::getSendQueueSize ();
+}
+
+NLMISC_DYNVARIABLE(string, Scroller, &quot;current size in bytes of the sent queue size&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if (get)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// display the scroll text
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static string foo = &nbsp; &nbsp; &nbsp; &nbsp;&quot;Welcome to NeL Service! This scroll is used to see the update frequency of the main function and to see if the service is frozen or not. Have a nice day and hope you'll like NeL!!! &quot;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Welcome to NeL Service! This scroll is used to see the update frequency of the main function and to see if the service is frozen or not. Have a nice day and hope you'll like NeL!!! &quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;static int pos = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pointer = foo.substr ((pos++)%(foo.size()/2), 10);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+NLMISC_COMMAND (quit, &quot;exit the service&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;ExitSignalAsked = 0xFFFF;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND (brutalQuit, &quot;exit the service brutally&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;exit (0xFFFFFFFF);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+
+#ifdef MUTEX_DEBUG
+NLMISC_COMMAND (mutex, &quot;display mutex values&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;map&lt;CFairMutex*,TMutexLocks&gt; &nbsp; &nbsp; &nbsp; &nbsp;acquiretimes = getNewAcquireTimes();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;map&lt;CFairMutex*,TMutexLocks&gt;::iterator im;
+ &nbsp; &nbsp; &nbsp; &nbsp;for ( im=acquiretimes.begin(); im!=acquiretimes.end(); ++im )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo( &quot;%d %p %s: %.0f %.0f, called %u times th(%d, %d wait)%s&quot;, (*im).second.MutexNum, (*im).first, (*im).second.MutexName.c_str(),
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CTime::cpuCycleToSecond((*im).second.TimeToEnter)*1000.0, CTime::cpuCycleToSecond((*im).second.TimeInMutex)*1000.0,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*im).second.Nb, (*im).second.ThreadHavingTheMutex, (*im).second.WaitingMutex,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*im).second.Dead?&quot; DEAD&quot;:&quot;&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+#endif // MUTEX_DEBUG
+
+NLMISC_COMMAND (serviceInfo, &quot;display information about this service&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service %d '%s' '%s' '%s' using NeL (&quot;__DATE__&quot; &quot;__TIME__&quot;)&quot;, IService::getInstance()-&gt;isService5()?5:4, IService::getInstance()-&gt;_ShortName.c_str(), IService::getInstance()-&gt;_LongName.c_str(), IService::getInstance()-&gt;_AliasName.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service listening port: %d&quot;, IService::getInstance()-&gt;_Port);
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service running directory: '%s'&quot;, IService::getInstance()-&gt;_RunningPath.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service log directory: '%s'&quot;, IService::getInstance()-&gt;_LogDir.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service config directory: '%s' config filename: '%s.cfg'&quot;, IService::getInstance()-&gt;_ConfigDir.c_str(), IService::getInstance()-&gt;_LongName.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service id: %d&quot;, IService::getInstance()-&gt;_SId);
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service update timeout: %dms&quot;, IService::getInstance()-&gt;_UpdateTimeout);
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service %suse naming service&quot;, IService::getInstance()-&gt;_DontUseNS?&quot;don't &quot;:&quot;&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Service %suse admin executor service&quot;, IService::getInstance()-&gt;_DontUseAES?&quot;don't &quot;:&quot;&quot;);
+#ifdef NL_RELEASE_DEBUG
+ &nbsp; &nbsp; &nbsp; &nbsp;string mode = &quot;NL_RELEASE_DEBUG&quot;;
+#elif defined(NL_DEBUG_FAST)
+ &nbsp; &nbsp; &nbsp; &nbsp;string mode = &quot;NL_DEBUG_FAST&quot;;
+#elif defined(NL_DEBUG)
+ &nbsp; &nbsp; &nbsp; &nbsp;string mode = &quot;NL_DEBUG&quot;;
+#elif defined(NL_RELEASE)
+ &nbsp; &nbsp; &nbsp; &nbsp;string mode = &quot;NL_RELEASE&quot;;
+#else
+ &nbsp; &nbsp; &nbsp; &nbsp;string mode = &quot;???&quot;;
+#endif
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;NeL is compiled in %s mode&quot;, mode.c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Services arguments: %d args&quot;, IService::getInstance()-&gt;_Args.size ());
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; IService::getInstance()-&gt;_Args.size (); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;argv[%d] = '%s'&quot;, i, IService::getInstance()-&gt;_Args[i].c_str ());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Naming service info: %s&quot;, CNamingClient::info().c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;ICommand::execute (&quot;services&quot;, log);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND(resetMeasures, &quot;reset hierarchical timer&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;requireResetMeasures();
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND(displayMeasures, &quot;display hierarchical timer&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::display();
+ &nbsp; &nbsp; &nbsp; &nbsp;CHTimer::displayHierarchicalByExecutionPathSorted (InfoLog, CHTimer::TotalTime, true, 64);
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND(getWinDisplayerInfo, &quot;display the info about the pos and size of the window displayer&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 x,y,w,h;
+ &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;WindowDisplayer-&gt;getWindowPos (x,y,w,h);
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Window Displayer : XWinParam = %d; YWinParam = %d; WWinParam = %d; HWinParam = %d;&quot;, x, y, w, h);
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND(printConfigFile, &quot;display the variables of the default configfile&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;IService::getInstance()-&gt;ConfigFile.print(&amp;log);
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND(getUnknownConfigFileVariables, &quot;display the variables from config file that are called but not present&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;%d Variables not found in the configfile '%s'&quot;, IService::getInstance()-&gt;ConfigFile.UnknownVariables.size(), IService::getInstance()-&gt;ConfigFile.getFilename().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; IService::getInstance()-&gt;ConfigFile.UnknownVariables.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot; &nbsp;%s&quot;, IService::getInstance()-&gt;ConfigFile.UnknownVariables[i].c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+NLMISC_COMMAND (freeze, &quot;Freeze the service for N seconds (for debug purpose)&quot;, &quot;&lt;N&gt;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 1) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;sint32 n = atoi (args[0].c_str());
+
+ &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;Freezing %d seconds&quot;, n);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlSleep(n * 1000); &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+
+
+} //NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/stdnet.cpp?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/stdnet.cpp?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..eabe08c7
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/stdnet.cpp?rev=1.1&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/stdnet.cpp - view - 1.1</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="stdnet.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="stdnet.cpp?sortby=date">stdnet.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/stdnet.cpp?sortby=date">stdnet.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/stdnet.cpp?rev=1.1&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/stdnet.cpp?rev=1.1','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.1</B>, <i>Fri Dec 28 10:41:38 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>georges_v2, HEAD</b><PRE>
+ADDED: pch
+</PRE>
+</td></tr></table><HR noshade><PRE>
+#include &quot;stdnet.h&quot;
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?sortby=date
new file mode 100644
index 00000000..2887bf5f
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?sortby=date
@@ -0,0 +1,206 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / tcp_sock.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>tcp_sock.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 28 15:22:50 2002 UTC</i> (4 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.6: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+CHANGED: removed some debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Sep 10 13:43:56 2001 UTC</i> (10 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.3: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+CHANGED: removed synchronization of connected()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 14:22:41 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+Compilation Fix: socklen_t instead of int type for Unix's getsockopt
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Aug 22 15:50:55 2001 UTC</i> (11 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +53 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADDED TCP Window Size options
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="tcp_sock.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/tcp_sock.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="tcp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.4:nel_0_4">nel_0_4
+<OPTION VALUE="1.7:georges_v2">georges_v2
+<OPTION VALUE="1.4:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.7:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.4:nel_0_4">nel_0_4
+<OPTION VALUE="1.7:georges_v2">georges_v2
+<OPTION VALUE="1.4:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.7:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.7" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/tcp_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?rev=1.12&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?rev=1.12&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..cb3cf9c1
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?rev=1.12&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,414 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/transport_class.cpp - view - 1.12</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="transport_class.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="transport_class.cpp?sortby=date">transport_class.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?sortby=date">transport_class.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.12&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.12','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.12</B>, <i>Tue Jul 2 17:27:30 2002 UTC</i> (3 weeks, 6 days ago) by <i>miller</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>HEAD</b><BR>Changes since <b>1.11: +3 -2
+ lines</b><PRE>
+bug fix by Vianney
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file transport_class.cpp
+ * &lt;File description&gt;
+ *
+ * $Id: transport_class.cpp,v 1.12 2002/07/02 17:27:30 miller Exp $
+ */
+
+/* Copyright, 2000-2002 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NeL Network Services.
+ * NEVRAX NeL Network Services is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NeL Network Services is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NeL Network Services; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*
+ * Limitations: Not threadsafe, not reentrant.
+ */
+
+
+//
+// Includes
+//
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/misc/types_nl.h&quot;
+#include &quot;nel/misc/debug.h&quot;
+#include &quot;nel/misc/entity_id.h&quot;
+#include &quot;nel/misc/sheet_id.h&quot;
+
+#include &quot;nel/net/unified_network.h&quot;
+
+#include &quot;nel/net/transport_class.h&quot;
+
+//
+// Namespace
+//
+
+using namespace std;
+using namespace NLMISC;
+using namespace NLNET;
+
+namespace NLNET {
+
+//
+// Variables
+//
+
+uint CTransportClass::Mode = 0; // 0=nothing 1=read 2=write 3=register
+
+map&lt;string, CTransportClass::CRegisteredClass&gt; &nbsp;CTransportClass::LocalRegisteredClass; &nbsp; &nbsp; &nbsp; &nbsp;// registered class that are in my program
+
+CTransportClass::CRegisteredClass &nbsp; &nbsp; &nbsp; CTransportClass::TempRegisteredClass;
+
+NLNET::CMessage CTransportClass::TempMessage;
+
+vector&lt;CTransportClass::CRegisteredBaseProp *&gt; CTransportClass::DummyProp;
+
+bool CTransportClass::Init = false;
+
+
+//
+// Functions
+//
+
+string typeToString (CTransportClass::TProp type)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;string conv[] = {
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;PropUInt8&quot;, &quot;PropUInt16&quot;, &quot;PropUInt32&quot;, &quot;PropUInt64&quot;,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;PropSInt8&quot;, &quot;PropSInt16&quot;, &quot;PropSInt32&quot;, &quot;PropSInt64&quot;,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;PropBool&quot;, &quot;PropFloat&quot;, &quot;PropDouble&quot;, &quot;PropString&quot;, &quot;PropEntityId&quot;, &quot;PropSheetId&quot;, &quot;PropUKN&quot; };
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (type &gt; CTransportClass::PropUKN)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return &quot;&lt;InvalidType&gt;&quot;;
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return conv[type];
+}
+
+void CTransportClass::displayDifferentClass (uint8 sid, const string &amp;className, const vector&lt;CRegisteredBaseProp&gt; &amp;otherClass, const vector&lt;CRegisteredBaseProp *&gt; &amp;myClass)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Service with sid %u send me the TransportClass '%s' with differents properties:&quot;, sid, className.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;uint i;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;My local TransportClass is:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0; i &lt; myClass.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp; &nbsp;Property: %d Name: '%s' type: '%s'&quot;, i, myClass[i]-&gt;Name.c_str(), typeToString(myClass[i]-&gt;Type).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp;The other side TransportClass is:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (i = 0; i &lt; otherClass.size(); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot; &nbsp; &nbsp;Property: %d Name: '%s' type: '%s'&quot;, i, otherClass[i].Name.c_str(), typeToString(otherClass[i].Type).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void CTransportClass::registerOtherSideClass (uint8 sid, TOtherSideRegisteredClass &amp;osrc)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (TOtherSideRegisteredClass::iterator it = osrc.begin(); it != osrc.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// find the class name in the map
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRegisteredClass::iterator res = LocalRegisteredClass.find ((*it).first);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (res == LocalRegisteredClass.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// it s a class that the other side have but not me, can't send this class
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;CTransportClass::registerOtherSideClass(): the other side class '%s' is not registered in my system, skip it&quot;, (*it).first.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (sid &gt;= (*res).second.Instance-&gt;States.size ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*res).second.Instance-&gt;States.resize (sid+1);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*res).second.Instance-&gt;States[sid].clear ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (sint j = 0; j &lt; (sint)(*it).second.size (); j++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check each prop to see the correspondance
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// try to find the prop name in the array
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint k;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (k = 0; k &lt; (*res).second.Instance-&gt;Prop.size(); k++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).second[j].Name == (*res).second.Instance-&gt;Prop[k]-&gt;Name)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).second[j].Type != (*res).second.Instance-&gt;Prop[k]-&gt;Type)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;Property '%s' of the class '%s' have not the same type in the 2 sides (%s %s)&quot;, (*it).second[j].Name.c_str(), (*it).first.c_str(), typeToString((*it).second[j].Type).c_str(), typeToString((*res).second.Instance-&gt;Prop[k]-&gt;Type).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (k == (*res).second.Instance-&gt;Prop.size())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// not found, put -1
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*res).second.Instance-&gt;States[sid].push_back (make_pair (-1, (*it).second[j].Type));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// same, store the index
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*res).second.Instance-&gt;States[sid].push_back (make_pair (k, PropUKN));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the version are the same
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*it).second.size () != (*res).second.Instance-&gt;Prop.size ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 2 class don't have the same number of prop =&gt; different class =&gt; display class
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayDifferentClass (sid, (*it).first.c_str(), (*it).second, (*res).second.Instance-&gt;Prop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// check if the prop are same
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; (*res).second.Instance-&gt;Prop.size (); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((*res).second.Instance-&gt;Prop[i]-&gt;Name != (*it).second[i].Name)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// different name =&gt; different class =&gt; display class
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayDifferentClass (sid, (*it).first.c_str(), (*it).second, (*res).second.Instance-&gt;Prop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if ((*res).second.Instance-&gt;Prop[i]-&gt;Type != (*it).second[i].Type)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// different type =&gt; different class =&gt; display class
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayDifferentClass (sid, (*it).first.c_str(), (*it).second, (*res).second.Instance-&gt;Prop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;displayLocalRegisteredClass ();
+}
+
+
+void CTransportClass::registerClass (CTransportClass &amp;instance)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (Init);
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (Mode == 0);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the mode to register
+ &nbsp; &nbsp; &nbsp; &nbsp;Mode = 3;
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// clear the current class
+ &nbsp; &nbsp; &nbsp; &nbsp;TempRegisteredClass.clear ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// set the instance pointer
+ &nbsp; &nbsp; &nbsp; &nbsp;TempRegisteredClass.Instance = &amp;instance;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// fill name and props
+ &nbsp; &nbsp; &nbsp; &nbsp;TempRegisteredClass.Instance-&gt;description ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// add the new registered class in the array
+ &nbsp; &nbsp; &nbsp; &nbsp;LocalRegisteredClass[TempRegisteredClass.Instance-&gt;Name] = TempRegisteredClass;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// set to mode none
+ &nbsp; &nbsp; &nbsp; &nbsp;Mode = 0;
+}
+
+void CTransportClass::unregisterClass ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;for (TRegisteredClass::iterator it = LocalRegisteredClass.begin(); it != LocalRegisteredClass.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint j = 0; j &lt; (*it).second.Instance-&gt;Prop.size (); j++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete (*it).second.Instance-&gt;Prop[j];
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*it).second.Instance-&gt;Prop.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(*it).second.Instance = NULL;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;LocalRegisteredClass.clear ();
+}
+
+void CTransportClass::displayLocalRegisteredClass (CRegisteredClass &amp;c)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp;&gt; %s&quot;, c.Instance-&gt;Name.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint j = 0; j &lt; c.Instance-&gt;Prop.size (); j++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp; &nbsp;&gt; %s %s&quot;, c.Instance-&gt;Prop[j]-&gt;Name.c_str(), typeToString(c.Instance-&gt;Prop[j]-&gt;Type).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint l = 0; l &lt; c.Instance-&gt;States.size (); l++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (c.Instance-&gt;States[l].size () != 0)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp; &nbsp; &nbsp;&gt; sid: %u&quot;, l);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint k = 0; k &lt; c.Instance-&gt;States[l].size (); k++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp; &nbsp; &nbsp;- %d type : %s&quot;, c.Instance-&gt;States[l][k].first, typeToString(c.Instance-&gt;States[l][k].second).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void CTransportClass::displayLocalRegisteredClass ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC:&gt; LocalRegisteredClass:&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;for (TRegisteredClass::iterator it = LocalRegisteredClass.begin(); it != LocalRegisteredClass.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;displayLocalRegisteredClass ((*it).second);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+void cbTCReceiveMessage (CMessage &amp;msgin, const string &amp;name, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: cbReceiveMessage&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::TempMessage = msgin;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;string className;
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::TempMessage.serial (className);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::TRegisteredClass::iterator it = CTransportClass::LocalRegisteredClass.find (className);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (it == CTransportClass::LocalRegisteredClass.end ())
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;receive unknown class '%s', skip it&quot;, className.c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert ((*it).second.Instance != NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp;(*it).second.Instance-&gt;read (name, (uint8)sid);
+}
+
+void cbTCReceiveOtherSideClass (CMessage &amp;msgin, const string &amp;name, uint16 sid)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: cbReceiveOtherSideClass&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::TOtherSideRegisteredClass osrc;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbClass;
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbClass);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: %d class&quot;, nbClass);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; nbClass; i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;string className;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (className);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;osrc.push_back(make_pair (className, vector&lt;CTransportClass::CRegisteredBaseProp&gt;()));
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbProp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (nbProp);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp; %s (%d prop)&quot;, className.c_str(), nbProp);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint j = 0; j &lt; nbProp; j++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::CRegisteredBaseProp prop;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (prop.Name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msgin.serialEnum (prop.Type);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: &nbsp; &nbsp; %s %s&quot;, prop.Name.c_str(), typeToString(prop.Type).c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;osrc[osrc.size()-1].second.push_back (prop);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// we have the good structure
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::registerOtherSideClass ((uint8)sid, osrc);
+}
+
+static TUnifiedCallbackItem CallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;CT_LRC&quot;, cbTCReceiveOtherSideClass },
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;CT_MSG&quot;, cbTCReceiveMessage },
+};
+
+void cbTCUpService (const std::string &amp;serviceName, uint16 sid, void *arg)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nldebug (&quot;NETTC: CTransportClass Service %s %d is up&quot;, serviceName.c_str(), sid);
+ &nbsp; &nbsp; &nbsp; &nbsp;if (sid &gt;= 256)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;
+ &nbsp; &nbsp; &nbsp; &nbsp;CTransportClass::sendLocalRegisteredClass ((uint8)sid);
+}
+
+void CTransportClass::init ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// this isn't an error!
+ &nbsp; &nbsp; &nbsp; &nbsp;if (Init) return;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// filter all my debug stuffs
+ &nbsp; &nbsp; &nbsp; &nbsp;DebugLog-&gt;addNegativeFilter (&quot;NETTC&quot;);
+
+
+ &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;addCallbackArray (CallbackArray, sizeof (CallbackArray) / sizeof (CallbackArray[0]));
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// create an instance of all d'ifferent prop types
+
+ &nbsp; &nbsp; &nbsp; &nbsp;DummyProp.resize (PropUKN);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropUInt8 &lt; PropUKN); DummyProp[PropUInt8] = new CTransportClass::CRegisteredProp&lt;uint8&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropUInt16 &lt; PropUKN); DummyProp[PropUInt16] = new CTransportClass::CRegisteredProp&lt;uint16&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropUInt32 &lt; PropUKN); DummyProp[PropUInt32] = new CTransportClass::CRegisteredProp&lt;uint32&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropUInt64 &lt; PropUKN); DummyProp[PropUInt64] = new CTransportClass::CRegisteredProp&lt;uint64&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropSInt8 &lt; PropUKN); DummyProp[PropSInt8] = new CTransportClass::CRegisteredProp&lt;sint8&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropSInt16 &lt; PropUKN); DummyProp[PropSInt16] = new CTransportClass::CRegisteredProp&lt;sint16&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropSInt32 &lt; PropUKN); DummyProp[PropSInt32] = new CTransportClass::CRegisteredProp&lt;sint32&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropSInt64 &lt; PropUKN); DummyProp[PropSInt64] = new CTransportClass::CRegisteredProp&lt;sint64&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropBool &lt; PropUKN); DummyProp[PropBool] = new CTransportClass::CRegisteredProp&lt;bool&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropFloat &lt; PropUKN); DummyProp[PropFloat] = new CTransportClass::CRegisteredProp&lt;float&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropDouble &lt; PropUKN); DummyProp[PropDouble] = new CTransportClass::CRegisteredProp&lt;double&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropString &lt; PropUKN); DummyProp[PropString] = new CTransportClass::CRegisteredProp&lt;string&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropEntityId &lt; PropUKN); DummyProp[PropEntityId] = new CTransportClass::CRegisteredProp&lt;CEntityId&gt;;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (PropSheetId &lt; PropUKN); DummyProp[PropSheetId] = new CTransportClass::CRegisteredProp&lt;CSheetId&gt;;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// we have to know when a service comes, so add callback (put the callback before all other one because we have to send this message first)
+ &nbsp; &nbsp; &nbsp; &nbsp;CUnifiedNetwork::getInstance()-&gt;setServiceUpCallback(&quot;*&quot;, cbTCUpService, NULL, false);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;Init = true;
+}
+
+void CTransportClass::release ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;unregisterClass ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (uint i = 0; i &lt; DummyProp.size (); i++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;delete DummyProp[i];
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;DummyProp.clear ();
+}
+
+void CTransportClass::createLocalRegisteredClassMessage ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.clear ();
+ &nbsp; &nbsp; &nbsp; &nbsp;if (TempMessage.isReading())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.invert();
+ &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.setType (&quot;CT_LRC&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbClass = LocalRegisteredClass.size ();
+ &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.serial (nbClass);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;for (TRegisteredClass::iterator it = LocalRegisteredClass.begin(); it != LocalRegisteredClass.end (); it++)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert ((*it).first == (*it).second.Instance-&gt;Name);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.serial ((*it).second.Instance-&gt;Name);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint32 nbProp = (*it).second.Instance-&gt;Prop.size ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.serial (nbProp);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (uint j = 0; j &lt; (*it).second.Instance-&gt;Prop.size (); j++)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the name and the type of the prop
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.serial ((*it).second.Instance-&gt;Prop[j]-&gt;Name);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempMessage.serialEnum ((*it).second.Instance-&gt;Prop[j]-&gt;Type);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?sortby=date
new file mode 100644
index 00000000..5b57901f
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?sortby=date
@@ -0,0 +1,251 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / transport_class.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>transport_class.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jul 2 17:27:30 2002 UTC</i> (3 weeks, 6 days ago) by <i>miller</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.11: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+bug fix by Vianney
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jun 21 12:59:52 2002 UTC</i> (5 weeks, 3 days ago) by <i>miller</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+CHANGED: behaviour of init() - now returns peacefuly if already initialised
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 3 14:53:33 2002 UTC</i> (8 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+ADDED: manage sheet_id
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 3 09:54:52 2002 UTC</i> (8 weeks ago) by <i>miller</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+ADDED: PropSheetId to the managed property types
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Apr 15 14:49:34 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.7: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+#BUGIX: synthax error
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Apr 15 14:30:42 2002 UTC</i> (3 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +8 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+ADDED: assert if init() wasn't called.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 25 09:22:34 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+#FIXED: .c_str()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 14 13:48:12 2002 UTC</i> (4 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +89 -29
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: more assert and test
+ADDED: warn the user by displaying different classes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Feb 19 13:14:57 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +4 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+ADDED: string and entity_id management
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 15:23:29 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+BUGFIX: linux compile
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 15:22:53 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +8 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+BUGFIX: linux compile
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="transport_class.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/transport_class.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 15 14:40:21 2002 UTC</i> (5 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="transport_class.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADDED: transport class
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.8:georges_v2">georges_v2
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.12:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.8:georges_v2">georges_v2
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.12:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.12" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/transport_class.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?rev=1.11&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?rev=1.11&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..02dd6ba2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?rev=1.11&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,220 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/udp_sock.cpp - view - 1.11</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="udp_sock.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="udp_sock.cpp?sortby=date">udp_sock.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?sortby=date">udp_sock.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.11&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.11','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.11</B>, <i>Wed Apr 17 09:54:00 2002 UTC</i> (3 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>georges_v2, HEAD</b><BR>Changes since <b>1.10: +3 -4
+ lines</b><PRE>
+BUGFIX: wrong address
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file udp_sock.cpp
+ * Network engine, layer 0, udp socket
+ *
+ * $Id: udp_sock.cpp,v 1.11 2002/04/17 09:54:00 cado Exp $
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/udp_sock.h&quot;
+
+#ifdef NL_OS_WINDOWS
+#include &lt;winsock2.h&gt;
+#define socklen_t int
+#define ERROR_NUM WSAGetLastError()
+
+#elif defined NL_OS_UNIX
+#include &lt;unistd.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;sys/time.h&gt;
+#include &lt;sys/socket.h&gt;
+#include &lt;netinet/in.h&gt;
+#include &lt;netinet/tcp.h&gt;
+#include &lt;arpa/inet.h&gt;
+#include &lt;netdb.h&gt;
+#include &lt;errno.h&gt;
+//#include &lt;fcntl.h&gt;
+#define SOCKET_ERROR -1
+#define INVALID_SOCKET -1
+#define ERROR_NUM errno
+#define ERROR_MSG strerror(errno)
+typedef int SOCKET;
+
+#endif
+
+using namespace NLMISC;
+
+namespace NLNET {
+
+
+/*
+ * Constructor
+ */
+CUdpSock::CUdpSock( bool logging ) :
+ &nbsp; &nbsp; &nbsp; &nbsp;CSock( logging ),
+ &nbsp; &nbsp; &nbsp; &nbsp;_Bound( false )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// Socket creation
+ &nbsp; &nbsp; &nbsp; &nbsp;createSocket( SOCK_DGRAM, IPPROTO_UDP );
+}
+
+
+/** Binds the socket to the specified port. Call bind() for an unreliable socket if the host acts as a server and waits for
+ * messages. If the host acts as a client, call sendTo(), there is no need to bind the socket.
+ */
+void CUdpSock::bind( uint16 port )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;CInetAddress addr; // any IP address
+ &nbsp; &nbsp; &nbsp; &nbsp;addr.setPort( port );
+ &nbsp; &nbsp; &nbsp; &nbsp;bind( addr );
+ &nbsp; &nbsp; &nbsp; &nbsp;setLocalAddress(); // will not set the address if the host is multihomed, use bind(CInetAddress) instead
+}
+
+
+/*
+ * Same as bind(uint16) but binds on a specified address/port (useful when the host has several addresses)
+ */
+void CUdpSock::bind( const CInetAddress&amp; addr )
+{
+#ifndef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp;// Set Reuse Address On (does not work on Win98 and is useless on Win2000)
+ &nbsp; &nbsp; &nbsp; &nbsp;int value = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( setsockopt( _Sock, SOL_SOCKET, SO_REUSEADDR, &amp;value, sizeof(value) ) == SOCKET_ERROR )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;ReuseAddr failed&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_LocalAddr = addr;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Bind the socket
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ::bind( _Sock, (sockaddr*)(_LocalAddr.sockAddr()), sizeof(sockaddr) ) == SOCKET_ERROR )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Bind failed&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;_Bound = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _Logging )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Socket %d bound at %s&quot;, _Sock, _LocalAddr.asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Sends a message
+ */
+void CUdpSock::sendTo( const uint8 *buffer, uint len, const CInetAddress&amp; addr )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// &nbsp;Send
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ::sendto( _Sock, (const char*)buffer, len, 0, (sockaddr*)(addr.sockAddr()), sizeof(sockaddr) ) != (sint32)len )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Unable to send datagram&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesSent += len;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _Logging )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Socket %d sent %d bytes to %s&quot;, _Sock, len, addr.asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// If socket is unbound, retrieve local address
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ! _Bound )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;setLocalAddress();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_Bound = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+#ifdef NL_OS_WINDOWS
+ &nbsp; &nbsp; &nbsp; &nbsp;// temporary by ace to know size of SO_MAX_MSG_SIZE
+ &nbsp; &nbsp; &nbsp; &nbsp;static bool first = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;if (first)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uint MMS, SB;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int &nbsp;size = sizeof (MMS);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getsockopt (_Sock, SOL_SOCKET, SO_SNDBUF, (char *)&amp;SB, &amp;size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getsockopt (_Sock, SOL_SOCKET, SO_MAX_MSG_SIZE, (char *)&amp;MMS, &amp;size);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;the udp SO_MAX_MSG_SIZE=%u, SO_SNDBUF=%u&quot;, MMS, SB);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;first = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+#endif
+}
+
+
+/*
+ * Receives data from the peer. (blocking function)
+ */
+void CUdpSock::receive( uint8 *buffer, uint32&amp; len )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert( _Connected &amp;&amp; (buffer!=NULL) );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Receive incoming message
+ &nbsp; &nbsp; &nbsp; &nbsp;len = ::recv( _Sock, (char*)buffer, len , 0 );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check for errors (after setting the address)
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( len == SOCKET_ERROR )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Cannot receive data&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesReceived += len;
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _Logging )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Socket %d received %d bytes from peer %s&quot;, _Sock, len, _RemoteAddr.asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+/*
+ * Receives data and say who the sender is. (blocking function)
+ */
+void CUdpSock::receivedFrom( uint8 *buffer, uint&amp; len, CInetAddress&amp; addr )
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;// Receive incoming message
+ &nbsp; &nbsp; &nbsp; &nbsp;sockaddr_in saddr;
+ &nbsp; &nbsp; &nbsp; &nbsp;socklen_t saddrlen = sizeof(saddr);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;len = ::recvfrom( _Sock, (char*)buffer, len , 0, (sockaddr*)&amp;saddr, &amp;saddrlen );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// If an error occurs, the saddr is not valid
+ &nbsp; &nbsp; &nbsp; &nbsp;// When the remote socket is closed, get sender's address to know who is quitting
+ &nbsp; &nbsp; &nbsp; &nbsp;addr.setSockAddr( &amp;saddr );
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// Check for errors (after setting the address)
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( len == SOCKET_ERROR )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw ESocket( &quot;Cannot receive data&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_BytesReceived += len;
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _Logging )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nldebug( &quot;LNETL0: Socket %d received %d bytes from %s&quot;, _Sock, len, addr.asString().c_str() );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+}
+
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?sortby=date
new file mode 100644
index 00000000..f10c79e0
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?sortby=date
@@ -0,0 +1,246 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / udp_sock.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>udp_sock.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Apr 17 09:54:00 2002 UTC</i> (3 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.10: +3 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+BUGFIX: wrong address
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Apr 9 12:23:52 2002 UTC</i> (3 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +5 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+BUGFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +5 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 9 09:34:25 2001 UTC</i> (9 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +35 -9
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+ADDED receive and receiveFrom return len
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Sep 28 12:39:49 2001 UTC</i> (10 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +14 -10
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+ADDED address enumeration, multihomed hosts support
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Aug 23 14:31:20 2001 UTC</i> (11 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.4: +3 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+CHANGED: receivedfrom don't return anything now
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Aug 22 15:50:34 2001 UTC</i> (11 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +1 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Changed behaviour of receiveFrom : does not check if data available
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jul 9 10:12:25 2001 UTC</i> (12 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +13 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+BUGFIX: setsockopt missing option
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jul 6 17:30:24 2001 UTC</i> (12 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +11 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADDED: debug info about MMS and MTU
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="udp_sock.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/udp_sock.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="udp_sock.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:nel_0_4">nel_0_4
+<OPTION VALUE="1.11:georges_v2">georges_v2
+<OPTION VALUE="1.5:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.11:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.5:nel_0_4">nel_0_4
+<OPTION VALUE="1.11:georges_v2">georges_v2
+<OPTION VALUE="1.5:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.11:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.11" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/udp_sock.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?sortby=date
new file mode 100644
index 00000000..efcb2f6b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?sortby=date
@@ -0,0 +1,570 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / unified_network.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>unified_network.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.44"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.44&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.44</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.44&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.44&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.44&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.44&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Jul 26 09:01:18 2002 UTC</i> (3 days, 9 hours ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.43: +11 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.43&amp;r2=1.44&amp;sortby=date">1.43</A>
+<PRE>
+ADDED: stop check if the fucking assert occurs
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.43"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.43&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.43</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.43&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.43&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.43&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.43&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jul 25 14:32:44 2002 UTC</i> (4 days, 4 hours ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.42: +27 -12
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.42&amp;r2=1.43&amp;sortby=date">1.42</A>
+<PRE>
+ADDED: verbose info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.42"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.42&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.42</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.42&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.42&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.42&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.42&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jul 1 18:27:42 2002 UTC</i> (4 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.41: +25 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.41&amp;r2=1.42&amp;sortby=date">1.41</A>
+<PRE>
+FIXED: unicallback not called on not shard service relogging
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.41"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.41&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.41</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.41&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.41&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.41&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.41&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 25 09:35:58 2002 UTC</i> (4 weeks, 6 days ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.40: +17 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.40&amp;r2=1.41&amp;sortby=date">1.40</A>
+<PRE>
+FIXED: getNetBase() doesn't returns disconnected sockets any longer
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.40"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.40&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.40</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.40&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.40&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.40&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.40&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 12 10:16:34 2002 UTC</i> (6 weeks, 5 days ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.39: +7 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.39&amp;r2=1.40&amp;sortby=date">1.39</A>
+<PRE>
+ADDED: changed NULL into InvalidSockId
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.39"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.39&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.39</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.39&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.39&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.39&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.39&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jun 11 14:46:19 2002 UTC</i> (6 weeks, 6 days ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.38: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.38&amp;r2=1.39&amp;sortby=date">1.38</A>
+<PRE>
+FIXED: flush should not crash any longer on client callbacks
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.38"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.38&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.38</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.38&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.38&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.38&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.38&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 31 08:00:09 2002 UTC</i> (8 weeks, 3 days ago) by <i>chafik</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.37: +3 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.37&amp;r2=1.38&amp;sortby=date">1.37</A>
+<PRE>
+#added: float &amp; double in the createMessage procedure.
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.37"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.37&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.37</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.37&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.37&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.37&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.37&amp;sortby=date">[select for diffs]</A>
+, <i>Mon May 27 16:50:50 2002 UTC</i> (2 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.36: +123 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.36&amp;r2=1.37&amp;sortby=date">1.36</A>
+<PRE>
+BUGFIX: everything to avoid problem when disconnection lag
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.36"></a><a NAME="georges_v2"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.36&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.36</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.36&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.36&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.36&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.36&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 28 17:45:07 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>
+</b><BR>Changes since <b>1.35: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.35&amp;r2=1.36&amp;sortby=date">1.35</A>
+<PRE>
+BUGFIX: don't disconnect the NS if we don't use NS
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.35"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.35&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.35</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.35&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.35&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.35&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.35&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 25 09:22:22 2002 UTC</i> (4 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.34: +13 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.34&amp;r2=1.35&amp;sortby=date">1.34</A>
+<PRE>
+CHANGED: rename callback to avoid function name conflict
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.34"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.34&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.34</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.34&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.34&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.34&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.34&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 21 13:30:51 2002 UTC</i> (4 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.33: +19 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.33&amp;r2=1.34&amp;sortby=date">1.33</A>
+<PRE>
+FIXED: service lookup in getNetBase should work now (looks into _ConnectionStack as well)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.33"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.33&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.33</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.33&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.33&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.33&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.33&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Mar 14 09:47:57 2002 UTC</i> (4 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.32: +149 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.32&amp;r2=1.33&amp;sortby=date">1.32</A>
+<PRE>
+ADDED: msgin and msgout command to simulate send and receive message from network
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.32"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.32&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.32</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.32&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.32&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.32&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.32&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Mar 12 14:12:49 2002 UTC</i> (4 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.31: +25 -16
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.31&amp;r2=1.32&amp;sortby=date">1.31</A>
+<PRE>
+FIXED: unified network
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.31"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.31&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.31&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.31&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.31&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Mar 11 11:32:57 2002 UTC</i> (4 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.30: +18 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.30&amp;r2=1.31&amp;sortby=date">1.30</A>
+<PRE>
+CHANGED: getInstance() assert if CUnifiedNetwork is not initialized
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.30"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.30&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.30</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.30&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.30&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.30&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.30&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Feb 11 17:38:48 2002 UTC</i> (5 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.29: +35 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.29&amp;r2=1.30&amp;sortby=date">1.29</A>
+<PRE>
+FIXED: message processing now checks the validity of the service name
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.29"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.29&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.29</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.29&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.29&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.29&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.29&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Feb 7 17:16:22 2002 UTC</i> (5 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.28: +27 -17
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.28&amp;r2=1.29&amp;sortby=date">1.28</A>
+<PRE>
+ADDED: can add more than one callback for service up and down
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.28"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.28&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.28</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.28&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.28&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.28&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.28&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Jan 22 14:08:59 2002 UTC</i> (6 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.27: +4 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.27&amp;r2=1.28&amp;sortby=date">1.27</A>
+<PRE>
+CHANGED: sleep(1)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 31 13:32:39 2001 UTC</i> (6 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.26: +36 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+ADDED: the NS can shutdown/restart and resync with other services
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.25: +6 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 10 14:34:31 2001 UTC</i> (7 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.24: +15 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+CHANGED: net log are better specified to enable log filtering
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 29 15:39:54 2001 UTC</i> (7 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +38 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+ADDED: update time out depending of the last update
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 28 11:12:08 2001 UTC</i> (7 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+BUGFIX: autoretry connection crashed
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 28 10:36:52 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +3 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+BUGFIX: crash when launching/killing lot of services quickly
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 17:53:12 2001 UTC</i> (8 months ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+FIXED: uses service id instead of service name in addService()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 17:33:07 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.19: +35 -20
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+CHANGED: now release threads in the release()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 15:01:52 2001 UTC</i> (8 months ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.18: +167 -148
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+FIXED: layer5 secured a bit
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:15:09 2001 UTC</i> (8 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.17: +5 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+BUGFIX: compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 27 14:12:48 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.16: +3 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+#english fix (sended-&gt;sent finnish-&gt;finish)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 26 16:42:40 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +89 -21
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+BUGFIX: when decon-&gt;con quickly
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +17 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 20 16:36:55 2001 UTC</i> (8 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +33 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+FIXED: service id correctly set
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 19 14:24:54 2001 UTC</i> (8 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+FIXED: read/write accessor debugged
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 19 14:07:45 2001 UTC</i> (8 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +9 -7
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+REMOVED: unuseful debug
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 15 15:26:40 2001 UTC</i> (8 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +318 -125
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+FIXED: now works properly in multithreaded
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 14 10:14:06 2001 UTC</i> (8 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+#FIXED: char * to string&amp;
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 14 10:02:00 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+FIXED: serviceName in callbacks
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 14 09:45:05 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +19 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+CHANGED: timeout reinterpreted in update(timeout)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 13 14:36:18 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +7 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+FIXED: appId() correctly set now a relog (after a service crash and autoRetry)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 13 13:05:58 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +54 -20
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+FIXED: connection is a bit more secured, auto retry should work properly now
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 13 11:58:42 2001 UTC</i> (8 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +6 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+ADDED: comment
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 13 10:53:46 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +7 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+FIXED: &quot;*&quot; properly handled for service up/down
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 12 10:21:21 2001 UTC</i> (8 months, 2 weeks ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +23 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+ADDED: callbacks for all up/down service
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Oct 29 18:33:29 2001 UTC</i> (8 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +5 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+ADDED: isUsed()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="unified_network.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unified_network.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:23:04 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unified_network.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+New hi level network protocol
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.36:georges_v2">georges_v2
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.44:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.36:georges_v2">georges_v2
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.44:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.44" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unified_network.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?rev=1.31&content-type=text/x-cvsweb-markup&sortby=date/index.html b/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?rev=1.31&content-type=text/x-cvsweb-markup&sortby=date/index.html
new file mode 100644
index 00000000..d4ccaf2b
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?rev=1.31&content-type=text/x-cvsweb-markup&sortby=date/index.html
@@ -0,0 +1,397 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
+<HEAD><style> A { color:black }</style>
+<!-- hennerik CVSweb $Revision: 1.93 $ -->
+<TITLE>code/nel/src/net/unitime.cpp - view - 1.31</TITLE></HEAD>
+<BODY BGCOLOR="#eeeeee">
+<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="unitime.cpp?sortby=date"><IMG SRC="http://www.nevrax.org/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="unitime.cpp?sortby=date">unitime.cpp</A>
+ CVS log</b> <IMG SRC="http://www.nevrax.org/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="http://www.nevrax.org/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a></b></td></tr></table><HR noshade><table width="100%"><tr><td bgcolor="#ffffff">File: <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?sortby=date">unitime.cpp</a>&nbsp;(<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.31&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.31','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>)<BR>
+Revision <B>1.31</B>, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b>MAIN</b>
+<BR>CVS Tags: <b>georges_v2, HEAD</b><BR>Changes since <b>1.30: +12 -11
+ lines</b><PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+</td></tr></table><HR noshade><PRE>/** \file unitime.cpp
+ * _CUniTime class
+ *
+ * $Id: unitime.cpp,v 1.31 2001/12/28 10:17:21 lecroart Exp $
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#include &quot;stdnet.h&quot;
+
+#include &quot;nel/net/callback_client.h&quot;
+#include &quot;nel/net/callback_server.h&quot;
+#include &quot;nel/net/naming_client.h&quot;
+#include &quot;nel/net/message.h&quot;
+
+#include &quot;nel/net/unitime.h&quot;
+
+using namespace NLMISC;
+using namespace std;
+
+namespace NLNET
+{
+
+TTime _CUniTime::_SyncUniTime = 0;
+TTime _CUniTime::_SyncLocalTime = 0;
+bool _CUniTime::_Simulate = false;
+
+bool _CUniTime::Sync = false;
+
+
+void _CUniTime::setUniTime (NLMISC::TTime uTime, NLMISC::TTime lTime)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+/* &nbsp; &nbsp; &nbsp;if (Sync)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime lt = getLocalTime ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime delta = uTime - lTime + _SyncLocalTime - _SyncUniTime;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;_CUniTime::setUniTime(%&quot;NL_I64&quot;d, %&quot;NL_I64&quot;d): Resyncing delta %&quot;NL_I64&quot;dms&quot;,uTime,lTime,delta);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;_CUniTime::setUniTime(%&quot;NL_I64&quot;d, %&quot;NL_I64&quot;d)&quot;,uTime,lTime);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Sync = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;_SyncUniTime = uTime;
+ &nbsp; &nbsp; &nbsp; &nbsp;_SyncLocalTime = lTime;
+*/}
+
+void _CUniTime::setUniTime (NLMISC::TTime uTime)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+// &nbsp; &nbsp; &nbsp;setUniTime (uTime, getLocalTime ());
+}
+
+
+
+TTime _CUniTime::getUniTime ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;return 0;
+/* &nbsp; &nbsp; &nbsp;if (!Sync)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;called getUniTime before calling syncUniTimeFromServer&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;return getLocalTime () - (_SyncLocalTime - _SyncUniTime);
+*/
+}
+
+
+const char *_CUniTime::getStringUniTime ()
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;return getStringUniTime(_CUniTime::getUniTime());
+}
+
+
+const char *_CUniTime::getStringUniTime (TTime ut)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;static char str[512];
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 ms = (uint32) (ut % 1000); // time in ms 1000ms dans 1s
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 1000;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 s = (uint32) (ut % 60); // time in seconds 60s dans 1mn
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 60;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 m = (uint32) (ut % 60); // time in minutes 60m dans 1h
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 60;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 h = (uint32) (ut % 9); // time in hours 9h dans 1j
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 9;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 day = (uint32) (ut % (8*4)); // time in days 8day dans 1month
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 8;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 week = (uint32) (ut % 4); // time in weeks 4week dans 1month
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 4;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 month = (uint32) (ut % 12); // time in months 12month dans 1year
+ &nbsp; &nbsp; &nbsp; &nbsp;ut /= 12;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;uint &nbsp;year = &nbsp;(uint32) ut; &nbsp; &nbsp; &nbsp; &nbsp;// time in years
+
+ &nbsp; &nbsp; &nbsp; &nbsp;smprintf (str, 512, &quot;%02d/%02d/%04d (week %d) %02d:%02d:%02d.%03d&quot;, day+1, month+1, year+1, week+1, h, m, s, ms);
+ &nbsp; &nbsp; &nbsp; &nbsp;return str;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////// SYNCHRONISATION BETWEEN TIME SERVICE AND OTHER SERVICES ////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+static bool GetUniversalTime;
+static uint32 GetUniversalTimeSecondsSince1970;
+static TTime GetUniversalTimeUniTime;
+
+
+static void cbGetUniversalTime (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the association between a date and unitime
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (GetUniversalTimeSecondsSince1970);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (GetUniversalTimeUniTime);
+ &nbsp; &nbsp; &nbsp; &nbsp;GetUniversalTime = true;
+}
+
+static TCallbackItem UniTimeCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;GUT&quot;, cbGetUniversalTime }
+};
+
+void _CUniTime::syncUniTimeFromService (CCallbackNetBase::TRecordingState rec, const CInetAddress *addr)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;/*
+ &nbsp; &nbsp; &nbsp; &nbsp;TTime deltaAdjust, lt;
+ &nbsp; &nbsp; &nbsp; &nbsp;uint32 firstsecond, nextsecond;
+ &nbsp; &nbsp; &nbsp; &nbsp;TTime before, after, delta;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// create a message with type in the full text format
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (&quot;AUT&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;CCallbackClient server( rec, &quot;TS.nmr&quot; );
+ &nbsp; &nbsp; &nbsp; &nbsp;server.addCallbackArray (UniTimeCallbackArray, sizeof (UniTimeCallbackArray) / sizeof (UniTimeCallbackArray[0]));
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (addr == NULL)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CNamingClient::lookupAndConnect (&quot;TS&quot;, server);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server.connect (*addr);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!server.connected()) goto error;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;server.send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// before time
+ &nbsp; &nbsp; &nbsp; &nbsp;before = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// receive the answer
+ &nbsp; &nbsp; &nbsp; &nbsp;GetUniversalTime = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;while (!GetUniversalTime)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!server.connected()) goto error;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server.update ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlSleep( 0 );
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// after, before and delta is not used. It's only for information purpose.
+ &nbsp; &nbsp; &nbsp; &nbsp;after = CTime::getLocalTime ();
+ &nbsp; &nbsp; &nbsp; &nbsp;delta = after - before;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;_CUniTime::syncUniTimeFromService(): ping:%&quot;NL_I64&quot;dms, time:%ds, unitime:%&quot;NL_I64&quot;dms&quot;, delta, GetUniversalTimeSecondsSince1970, GetUniversalTimeUniTime);
+
+// &lt;-- from here to the &quot;--&gt;&quot; comment, the block must be executed in less than one second or an infinite loop occurs
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the second
+ &nbsp; &nbsp; &nbsp; &nbsp;firstsecond = CTime::getSecondsSince1970 ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nextsecond = firstsecond+1;
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;// wait the next start of the second (take 100% of CPU to be more accurate)
+ &nbsp; &nbsp; &nbsp; &nbsp;while (nextsecond != CTime::getSecondsSince1970 ())
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlassert (CTime::getSecondsSince1970 () &lt;= nextsecond);
+
+// --&gt;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the local time of the beginning of the next second
+ &nbsp; &nbsp; &nbsp; &nbsp;lt = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( ! _Simulate )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (abs((sint32)((TTime)nextsecond - (TTime)GetUniversalTimeSecondsSince1970)) &gt; 10)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;the time delta (between me and the Time Service) is too big (more than 10s), servers aren't NTP synchronized&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto error;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// compute the delta between the other side and our side number of second since 1970
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;deltaAdjust = ((TTime) nextsecond - (TTime) GetUniversalTimeSecondsSince1970) * 1000;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// adjust the unitime to the current localtime
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetUniversalTimeUniTime += deltaAdjust;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;_CUniTime::syncUniTimeFromService(): rtime:%ds, runitime:%&quot;NL_I64&quot;ds, rlocaltime:%&quot;NL_I64&quot;d, deltaAjust:%&quot;NL_I64&quot;dms&quot;, nextsecond, GetUniversalTimeUniTime, lt, deltaAdjust);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;_CUniTime::syncUniTimeFromService(): runitime:%&quot;NL_I64&quot;ds, rlocaltime:%&quot;NL_I64&quot;d&quot;, GetUniversalTimeUniTime, lt);
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;_CUniTime::setUniTime (GetUniversalTimeUniTime, lt);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;server.disconnect ();
+ &nbsp; &nbsp; &nbsp; &nbsp;return;
+
+error:
+ &nbsp; &nbsp; &nbsp; &nbsp;nlerror (&quot;Time Service is not found, lost or can't synchronize universal time&quot;);
+*/
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////// SYNCHRONISATION BETWEEN CLIENT AND SHARD ///////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Server part
+
+static void cbServerAskUniversalTime (CMessage&amp; msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;TTime ut = _CUniTime::getUniTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp;// afficher l adresse de celui qui demande
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo(&quot;Send the universal time %&quot;NL_I64&quot;d to '%s'&quot;, ut, netbase.hostAddress(from).asString().c_str());
+ &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (netbase.getSIDA(), &quot;GUT&quot;);
+ &nbsp; &nbsp; &nbsp; &nbsp;msgout.serial (ut);
+ &nbsp; &nbsp; &nbsp; &nbsp;netbase.send (msgout, from);
+}
+
+TCallbackItem ServerTimeServiceCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;AUT&quot;, cbServerAskUniversalTime },
+};
+
+void _CUniTime::installServer (CCallbackServer *server)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;static bool alreadyAddedCallback = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (server != NULL);
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (!alreadyAddedCallback);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;server-&gt;addCallbackArray (ServerTimeServiceCallbackArray, sizeof (ServerTimeServiceCallbackArray) / sizeof (ServerTimeServiceCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp;alreadyAddedCallback = true;
+}
+
+// Client part
+
+static bool GetClientUniversalTime;
+static TTime GetClientUniversalTimeUniTime;
+
+static void cbClientGetUniversalTime (CMessage &amp;msgin, TSockId from, CCallbackNetBase &amp;netbase)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+ &nbsp; &nbsp; &nbsp; &nbsp;// get the association between a date and unitime
+ &nbsp; &nbsp; &nbsp; &nbsp;msgin.serial (GetClientUniversalTimeUniTime);
+ &nbsp; &nbsp; &nbsp; &nbsp;GetClientUniversalTime = true;
+}
+
+static TCallbackItem ClientUniTimeCallbackArray[] =
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;{ &quot;GUT&quot;, cbClientGetUniversalTime }
+};
+
+
+void _CUniTime::syncUniTimeFromServer (CCallbackClient *client)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;nlstop;
+/* &nbsp; &nbsp; &nbsp;static bool alreadyAddedCallback = false;
+ &nbsp; &nbsp; &nbsp; &nbsp;nlassert (client != NULL);
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!alreadyAddedCallback)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client-&gt;addCallbackArray (ClientUniTimeCallbackArray, sizeof (ClientUniTimeCallbackArray) / sizeof (ClientUniTimeCallbackArray[0]));
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alreadyAddedCallback = true;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;sint attempt = 0;
+ &nbsp; &nbsp; &nbsp; &nbsp;TTime bestdelta = 60000; &nbsp; &nbsp; &nbsp; &nbsp;// 1 minute
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if (!client-&gt;connected ()) goto error;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;while (attempt &lt; 10)
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMessage msgout (client-&gt;getSIDA(), &quot;AUT&quot;);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!client-&gt;connected()) goto error;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// send the message
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client-&gt;send (msgout);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// before time
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime before = CTime::getLocalTime ();
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// receive the answer
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetClientUniversalTime = false;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (!GetClientUniversalTime)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!client-&gt;connected()) goto error;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client-&gt;update ();
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TTime after = CTime::getLocalTime (), delta = after - before;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (delta &lt; 10 || delta &lt; bestdelta)
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bestdelta = delta;
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_CUniTime::setUniTime (GetClientUniversalTimeUniTime, (before+after)/2);
+
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (delta &lt; 10) break;
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;attempt++;
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;client-&gt;disconnect ();
+ &nbsp; &nbsp; &nbsp; &nbsp;nlinfo (&quot;Universal time is %&quot;NL_I64&quot;dms with a mean error of %&quot;NL_I64&quot;dms&quot;, _CUniTime::getUniTime(), bestdelta/2);
+ &nbsp; &nbsp; &nbsp; &nbsp;return;
+error:
+ &nbsp; &nbsp; &nbsp; &nbsp;nlwarning (&quot;there's no connection or lost or can't synchronize universal time&quot;);
+*/
+}
+
+
+//
+// Commands
+//
+/*
+NLMISC_COMMAND (time, &quot;displays the universal time&quot;, &quot;&quot;)
+{
+ &nbsp; &nbsp; &nbsp; &nbsp;if(args.size() != 0) return false;
+
+ &nbsp; &nbsp; &nbsp; &nbsp;if ( _CUniTime::Sync )
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;CTime::getLocalTime(): %&quot;NL_I64&quot;dms, _CUniTime::getUniTime(): %&quot;NL_I64&quot;dms&quot;, CTime::getLocalTime (), _CUniTime::getUniTime ());
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;_CUniTime::getStringUniTime(): '%s'&quot;, _CUniTime::getStringUniTime());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+ &nbsp; &nbsp; &nbsp; &nbsp;else
+ &nbsp; &nbsp; &nbsp; &nbsp;{
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;log.displayNL (&quot;CTime::getLocalTime(): %&quot;NL_I64&quot;dms &lt;Universal time not sync&gt;&quot;, CTime::getLocalTime ());
+ &nbsp; &nbsp; &nbsp; &nbsp;}
+
+ &nbsp; &nbsp; &nbsp; &nbsp;return true;
+}
+*/
+
+} // NLNET
+</PRE> \ No newline at end of file
diff --git a/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?sortby=date b/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?sortby=date
new file mode 100644
index 00000000..6bdc46b2
--- /dev/null
+++ b/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?sortby=date
@@ -0,0 +1,461 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : cvs</TITLE>
+ <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World">
+
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/cvs/"><img src="http://www.nevrax.org/inc/img/t_cvs.gif" ALT="cvs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+
+<!-- title -->
+<table width=100%><tr><td align=left><b> <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/?sortby=date">src</a> / <a href="/cvs/cvsweb.cgi/code/nel/src/net/?sortby=date">net</a> / unitime.cpp</b></td><td align=right><b></b></td></TR></TABLE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>unitime.cpp</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<p>Default branch: MAIN<BR>
+<HR size=1 NOSHADE><P><a NAME="rev1.31"></a><a NAME="georges_v2"></a><a NAME="HEAD"></a><a NAME="MAIN"></a>
+ Revision <A HREF="unitime.cpp?rev=1.31&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.31</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.31&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.31&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.31&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.31&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 28 10:17:21 2001 UTC</i> (7 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=georges_v2">georges_v2</A>,
+<A HREF="unitime.cpp?sortby=date&amp;only_with_tag=HEAD">HEAD</A>
+</b><BR>Changes since <b>1.30: +12 -11
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.30&amp;r2=1.31&amp;sortby=date">1.30</A>
+<PRE>
+ADDED: support of precompilated header on visual
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.30"></a>
+ Revision <A HREF="unitime.cpp?rev=1.30&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.30</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.30&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.30&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.30&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.30&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Nov 22 10:40:13 2001 UTC</i> (8 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.29: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.29&amp;r2=1.30&amp;sortby=date">1.29</A>
+<PRE>
+TRY: change nlSleep(10) into nlSleep(0)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.29"></a>
+ Revision <A HREF="unitime.cpp?rev=1.29&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.29</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.29&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.29&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.29&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.29&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 13 12:00:14 2001 UTC</i> (8 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.28: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.28&amp;r2=1.29&amp;sortby=date">1.28</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.28"></a>
+ Revision <A HREF="unitime.cpp?rev=1.28&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.28</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.28&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.28&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.28&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.28&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Oct 16 09:19:35 2001 UTC</i> (9 months, 1 week ago) by <i>legros</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.27: +38 -27
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.27&amp;r2=1.28&amp;sortby=date">1.27</A>
+<PRE>
+CHANGED: renamed CUniTime into _CUniTime to inactivate unitime functionnality (deprecated)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.27"></a>
+ Revision <A HREF="unitime.cpp?rev=1.27&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.27</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.27&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.27&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.27&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.27&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Oct 5 14:52:41 2001 UTC</i> (9 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.26: +25 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.26&amp;r2=1.27&amp;sortby=date">1.26</A>
+<PRE>
+BUGFIX: there was 2 'time' commands
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.26"></a><a NAME="nel_0_4"></a><a NAME="demo_0_1"></a>
+ Revision <A HREF="unitime.cpp?rev=1.26&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.26</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.26&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.26&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.26&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.26&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jun 18 09:09:20 2001 UTC</i> (13 months, 1 week ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=nel_0_4">nel_0_4</A>,
+<A HREF="unitime.cpp?sortby=date&amp;only_with_tag=demo_0_1">demo_0_1</A>
+</b><BR>Changes since <b>1.25: +25 -13
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.25&amp;r2=1.26&amp;sortby=date">1.25</A>
+<PRE>
+Added service support for message recorder
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.25"></a>
+ Revision <A HREF="unitime.cpp?rev=1.25&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.25</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.25&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.25&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.25&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.25&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Jun 13 10:19:19 2001 UTC</i> (13 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.24: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.24&amp;r2=1.25&amp;sortby=date">1.24</A>
+<PRE>
+#DOCFIX
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.24"></a>
+ Revision <A HREF="unitime.cpp?rev=1.24&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.24</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.24&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.24&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.24&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.24&amp;sortby=date">[select for diffs]</A>
+, <i>Thu May 31 15:26:53 2001 UTC</i> (13 months, 4 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.23: +4 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.23&amp;r2=1.24&amp;sortby=date">1.23</A>
+<PRE>
+#MODIFIED: change nlwarning to nlerror, now if the synchro failed, the program ll stop
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.23"></a>
+ Revision <A HREF="unitime.cpp?rev=1.23&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.23</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.23&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.23&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.23&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.23&amp;sortby=date">[select for diffs]</A>
+, <i>Tue May 29 11:51:34 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.22: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.22&amp;r2=1.23&amp;sortby=date">1.22</A>
+<PRE>
+BUGFIX: compile on linux
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.22"></a>
+ Revision <A HREF="unitime.cpp?rev=1.22&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.22</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.22&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.22&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.22&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.22&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 25 11:52:42 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.21: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.21&amp;r2=1.22&amp;sortby=date">1.21</A>
+<PRE>
+BUGFIX: forgot a ; after an assert, failed to compile in release mode
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.21"></a>
+ Revision <A HREF="unitime.cpp?rev=1.21&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.21</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.21&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.21&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.21&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.21&amp;sortby=date">[select for diffs]</A>
+, <i>Fri May 25 08:51:07 2001 UTC</i> (14 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.20: +222 -54
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.20&amp;r2=1.21&amp;sortby=date">1.20</A>
+<PRE>
+MODIFIED: new time system for services&lt;-&gt;time service and client&lt;-&gt;shard
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.20"></a>
+ Revision <A HREF="unitime.cpp?rev=1.20&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.20</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.20&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.20&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.20&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.20&amp;sortby=date">[select for diffs]</A>
+, <i>Wed May 2 12:36:31 2001 UTC</i> (14 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.19: +57 -36
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.19&amp;r2=1.20&amp;sortby=date">1.19</A>
+<PRE>
+ADD: new version of the network system (in NeL and NeLns)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.19"></a><a NAME="net_0_1"></a>
+ Revision <A HREF="unitime.cpp?rev=1.19&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.19</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.19&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.19&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.19&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.19&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Feb 23 10:58:12 2001 UTC</i> (17 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=net_0_1">net_0_1</A>
+</b><BR>Changes since <b>1.18: +2 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.18&amp;r2=1.19&amp;sortby=date">1.18</A>
+<PRE>
+MODIFY: display only the result of the time synchronisation
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.18"></a><a NAME="proto_0_2"></a><a NAME="nel_0_3"></a>
+ Revision <A HREF="unitime.cpp?rev=1.18&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.18</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.18&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.18&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.18&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.18&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Jan 29 17:47:55 2001 UTC</i> (17 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=proto_0_2">proto_0_2</A>,
+<A HREF="unitime.cpp?sortby=date&amp;only_with_tag=nel_0_3">nel_0_3</A>
+</b><BR>Changes since <b>1.17: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.17&amp;r2=1.18&amp;sortby=date">1.17</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.17"></a><a NAME="proto_0_1"></a><a NAME="nel_0_2"></a>
+ Revision <A HREF="unitime.cpp?rev=1.17&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.17</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.17&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.17&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.17&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.17&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Jan 4 14:37:24 2001 UTC</i> (18 months, 3 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>CVS Tags: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=proto_0_1">proto_0_1</A>,
+<A HREF="unitime.cpp?sortby=date&amp;only_with_tag=nel_0_2">nel_0_2</A>
+</b><BR>Changes since <b>1.16: +8 -6
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.16&amp;r2=1.17&amp;sortby=date">1.16</A>
+<PRE>
+bug fix in time conversion
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.16"></a>
+ Revision <A HREF="unitime.cpp?rev=1.16&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.16</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.16&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.16&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.16&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.16&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Dec 19 14:35:31 2000 UTC</i> (19 months, 1 week ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.15: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.15&amp;r2=1.16&amp;sortby=date">1.15</A>
+<PRE>
+set unix compatibility
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.15"></a>
+ Revision <A HREF="unitime.cpp?rev=1.15&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.15</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.15&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.15&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.15&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.15&amp;sortby=date">[select for diffs]</A>
+, <i>Thu Dec 14 17:43:04 2000 UTC</i> (19 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.14: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.14&amp;r2=1.15&amp;sortby=date">1.14</A>
+<PRE>
+bugfix
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.14"></a>
+ Revision <A HREF="unitime.cpp?rev=1.14&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.14</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.14&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.14&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.14&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.14&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Dec 13 14:38:14 2000 UTC</i> (19 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.13: +3 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.13&amp;r2=1.14&amp;sortby=date">1.13</A>
+<PRE>
+improved network engine
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.13"></a>
+ Revision <A HREF="unitime.cpp?rev=1.13&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.13</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.13&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.13&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.13&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.13&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Dec 11 11:46:58 2000 UTC</i> (19 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.12: +12 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.12&amp;r2=1.13&amp;sortby=date">1.12</A>
+<PRE>
+new connection possibility
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.12"></a>
+ Revision <A HREF="unitime.cpp?rev=1.12&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.12</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.12&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.12&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.12&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.12&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 8 18:11:43 2000 UTC</i> (19 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.11: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.11&amp;r2=1.12&amp;sortby=date">1.11</A>
+<PRE>
+fixing connexion
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.11"></a>
+ Revision <A HREF="unitime.cpp?rev=1.11&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.11</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.11&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.11&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.11&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.11&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 8 17:20:27 2000 UTC</i> (19 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.10: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.10&amp;r2=1.11&amp;sortby=date">1.10</A>
+<PRE>
+Debug info
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.10"></a>
+ Revision <A HREF="unitime.cpp?rev=1.10&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.10</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.10&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.10&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.10&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.10&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Dec 8 15:17:45 2000 UTC</i> (19 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.9: +3 -3
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.9&amp;r2=1.10&amp;sortby=date">1.9</A>
+<PRE>
+sync to unitime for all services
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.9"></a>
+ Revision <A HREF="unitime.cpp?rev=1.9&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.9</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.9&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.9&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.9&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.9&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 28 15:50:33 2000 UTC</i> (19 months, 4 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.8: +1 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.8&amp;r2=1.9&amp;sortby=date">1.8</A>
+<PRE>
+Doc update
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.8"></a>
+ Revision <A HREF="unitime.cpp?rev=1.8&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.8</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.8&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.8&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.8&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.8&amp;sortby=date">[select for diffs]</A>
+, <i>Mon Nov 27 13:25:40 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.7: +3 -5
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.7&amp;r2=1.8&amp;sortby=date">1.7</A>
+<PRE>
+Added lookupAndConnect()
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.7"></a>
+ Revision <A HREF="unitime.cpp?rev=1.7&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.7</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.7&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.7&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.7&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.7&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Nov 24 10:43:53 2000 UTC</i> (20 months ago) by <i>coutelas</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.6: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.6&amp;r2=1.7&amp;sortby=date">1.6</A>
+<PRE>
+no message
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.6"></a>
+ Revision <A HREF="unitime.cpp?rev=1.6&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.6</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.6&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.6&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.6&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.6&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Nov 24 10:13:58 2000 UTC</i> (20 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.5: +35 -1
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.5&amp;r2=1.6&amp;sortby=date">1.5</A>
+<PRE>
+time to string
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.5"></a>
+ Revision <A HREF="unitime.cpp?rev=1.5&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.5</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.5&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.5&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.5&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.5&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 22 11:17:35 2000 UTC</i> (20 months ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.4: +2 -2
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.4&amp;r2=1.5&amp;sortby=date">1.4</A>
+<PRE>
+add automatic lib loading
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.4"></a>
+ Revision <A HREF="unitime.cpp?rev=1.4&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.4</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.4&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.4&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.4&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.4&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 21 17:59:01 2000 UTC</i> (20 months ago) by <i>valignat</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.3: +1 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.3&amp;r2=1.4&amp;sortby=date">1.3</A>
+<PRE>
+Remove some unnecessary includes
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.3"></a>
+ Revision <A HREF="unitime.cpp?rev=1.3&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.3</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.3&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.3&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.3&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.3&amp;sortby=date">[select for diffs]</A>
+, <i>Tue Nov 21 10:57:50 2000 UTC</i> (20 months ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.2: +3 -4
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.2&amp;r2=1.3&amp;sortby=date">1.2</A>
+<PRE>
+Using CUniTime (Time Service)
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.2"></a>
+ Revision <A HREF="unitime.cpp?rev=1.2&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.2</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.2&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.2&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.2&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.2&amp;sortby=date">[select for diffs]</A>
+, <i>Fri Nov 10 16:58:35 2000 UTC</i> (20 months, 2 weeks ago) by <i>cado</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Changes since <b>1.1: +9 -8
+ lines</b><BR>Diff to previous <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff?r1=1.1&amp;r2=1.2&amp;sortby=date">1.1</A>
+<PRE>
+Using CTime
+</PRE>
+<HR size=1 NOSHADE><P><a NAME="rev1.1"></a>
+ Revision <A HREF="unitime.cpp?rev=1.1&amp;content-type=text/x-cvsweb-markup&amp;sortby=date"><b>1.1</b></A> / (<A HREF="/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.1&amp;content-type=text/plain&amp;sortby=date" target="cvs_checkout" onClick="window.open('/cvs/cvsweb.cgi/~checkout~/code/nel/src/net/unitime.cpp?rev=1.1&amp;content-type=text/plain','cvs_checkout','resizeable,scrollbars');"><b>download</b></A>) - <a href="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?annotate=1.1&amp;sortby=date">annotate</a> - <A HREF="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp?r1=1.1&amp;sortby=date">[select for diffs]</A>
+, <i>Wed Nov 8 15:54:35 2000 UTC</i> (20 months, 2 weeks ago) by <i>lecroart</i>
+<BR>Branch: <b><A HREF="unitime.cpp?sortby=date&amp;only_with_tag=MAIN">MAIN</A>
+</b>
+<BR>Diff<PRE>
+time system (unitime &amp; time)
+</PRE>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Request Diffs</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp.diff" NAME="diff_select">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Diffs between
+<SELECT NAME="r1">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.18:proto_0_2">proto_0_2
+<OPTION VALUE="1.17:proto_0_1">proto_0_1
+<OPTION VALUE="1.19:net_0_1">net_0_1
+<OPTION VALUE="1.26:nel_0_4">nel_0_4
+<OPTION VALUE="1.18:nel_0_3">nel_0_3
+<OPTION VALUE="1.17:nel_0_2">nel_0_2
+<OPTION VALUE="1.31:georges_v2">georges_v2
+<OPTION VALUE="1.26:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.31:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr1" VALUE="1.1" onChange='document.diff_select.r1.selectedIndex=0'>
+ and
+<SELECT NAME="r2">
+<OPTION VALUE="text" SELECTED>Use Text Field
+<OPTION VALUE="1.18:proto_0_2">proto_0_2
+<OPTION VALUE="1.17:proto_0_1">proto_0_1
+<OPTION VALUE="1.19:net_0_1">net_0_1
+<OPTION VALUE="1.26:nel_0_4">nel_0_4
+<OPTION VALUE="1.18:nel_0_3">nel_0_3
+<OPTION VALUE="1.17:nel_0_2">nel_0_2
+<OPTION VALUE="1.31:georges_v2">georges_v2
+<OPTION VALUE="1.26:demo_0_1">demo_0_1
+<OPTION VALUE="1:MAIN">MAIN
+<OPTION VALUE="1.31:HEAD">HEAD
+</SELECT>
+<INPUT TYPE="TEXT" SIZE="12" NAME="tr2" VALUE="1.31" onChange='docuement.diff_select.r2.selectedIndex=0'>
+<BR>Type of Diff should be a&nbsp;<SELECT NAME="f">
+<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE=" Get Diffs ">
+</FORM>
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Select branch</B></TD>
+ <TD ALIGN=RIGHT> </td>
+</tr></table>
+<P>
+<P>
+<A name=branch></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+View only Branch:
+<SELECT NAME="only_with_tag" onchange="submit()">
+<OPTION VALUE="">Show all branches
+<OPTION>MAIN
+</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" View Branch ">
+</FORM>
+<A name=logsort></A>
+<FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/src/net/unitime.cpp">
+<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
+Sort log by:
+<SELECT NAME="logsort" onchange="submit()">
+<OPTION VALUE=cvs>Not sorted<OPTION VALUE=date SELECTED>Commit date<OPTION VALUE=rev>Revision</SELECT>
+<INPUT TYPE=SUBMIT VALUE=" Sort ">
+</FORM>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML></BODY></HTML>