[prev in list] [next in list] [prev in thread] [next in thread] 

List:       silc-devel
Subject:    [Silc-devel] [ANNOUNCE] SILC 20010201
From:       Pekka Riikonen <silc () poseidon ! pspt ! fi>
Date:       2001-02-01 19:20:41
Message-ID: Pine.LNX.4.10.10102012055460.29846-100000 () poseidon ! pspt ! fi
[Download RAW message or body]

A new development version 20010201 of SILC is available.  The software is
available from http://silc.pspt.fi web site:

        http://silc.pspt.fi/silc-20010201.tar.gz
        ftp://silc.pspt.fi/pub/silc/snapshots/

This is the first release this year.  As I've promised this version is
dedicated to router issues.  This version has now functional router
support for all basic conferencing services.  A lot has been changed and a
lot has been developed.  Following services has been tested in router
environment successfully, so far:

	o Server and router linking
	o Channel creation (JOIN)
	o Channel parting (LEAVE)
	o Channel messages
	o Private messages
	o WHOIS and IDENTIFY
	o USERS (was NAMES)
	o And several other non-visible things that happens under the
	  hood.

All tests were performed with two routers, two servers and n clients.
However, this is only the basic support and for example channel modes and
channel user modes does not yet work in router environment.  They are the
next in line.

This is also the time when we can start building the actual SILC network.
I'm willing to accept two or three server connections into silc.pspt.fi on
port 706 that is now running as SILC router.  There is also a server on
silc.pspt.ti on port 707 that is connected to the router.  Some people has
already asked when they could link their server to silc.pspt.fi.  Now is
the chance.  At least Ytti was interested a while back.  So, Ytti if you
still want to set up a server then contact me.  All the other interested
parties should contact me as soon as possible.  I urge people to test the
server and router now as it is the only way to find the bugs.  The reason
why I'm only accepting two or three servers is that it takes some time to
get the code stabilized.  After a while (say month) we can start accepting
more server and perhaps even routers.  For those who'd like to link their
server I assume that you will be available to upgrade your server quickly
for the next few days and weeks so that bugs gets fixed fast and the
network is up and running.

People should expect some minor, but annoying bugs since a lot has changed
internally.

For client users, you must upgrade your client since the old client is
not compatible with the new server.

Changes from previous version:

        * Fixed some minor bugs in client when sending WHOIS command.   The
          arguments was in wrong order.

        * Removed statis function add_to_channel from server in
          silcd/command.c that was previously used with the joining but
          is obsolete now.

        * Tested USERS command in router environment successfully with two
          routers, two servers and two clients.

        * Reorganized the USERS command and command reply in client library
          in lib/silcclient/command.c and lib/silcclient/command_reply.c.
          When the command is given by user we register a pending command
          callback that will reprocess the command after the reply has been
          received from the server.  When reprocessing the packet we then
          display the information.  Thus, the USERS information is displayed
          now in the command callback instead of in the command reply
          callback.  The processing of the command is same as previously
          when server has sent the command reply in the JOINing process.

        * Added to USERS command in silcd/command_reply.c to join the client,
          we didn't use to know about, to the channel after we've created
          a client entry for it.  Also, for clienet we did know already still
           check whether it is on the channel or not and add it if not.

        * Removed silc_server_command_join_notify as the function and its
          use was obsolete.

        * Changed the client's pending command handling to the same as the
          server's pending command handling.  It is also now possible to
          execute command reply functions from other command reply
          function as the function callbacks for commands and command
          replies are one and same.  The pending commands are not static
          list anymore, it is mallocated SilcDList in lib/silcclient/client.h
          in client connection context.  Thus, pending commands are server
          connection specific as it is convenient.

          Changed the function silc_client_command_pending and
          silc_client_command_pending_del and added new function
          silc_client_command_pending_check.  Removed the
          SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
          macros.

        * Added cmd_ident, current command identifier, to the client
          connection context in lib/silcclient/client.h to keep track on
          command identifiers used in command sending.  Client's command reply
          function handling now supports the mandatory command identifiers.

        * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
          funtions in client to fully support pending command callbacks.

        * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
          as one of the arguments to the application in the command reply
          client operation.

        * NOTE: The FORWARDED flag is depracated.  It used to be depracated
          before first releasing SILC but came back.  Now it is removed again
          and should come back nomore.  The FORWARDED flag was used only
          by the JOINing procedure by forwarding the command packet to router.
          Now, the JOINing procedure has been changed to more generic (due
          to various router environment issues) and FORWARDED is not needed
          anymore for anything.  The protocol specification is yet to be
          updated.

          Now, removed silc_server_packet_forward from server and the flag
          SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.

        * Renamed NAMES command to USERS command.  The NAMES was named that
          due to historical reasons.  Now it is renamed.  Also, rewrote
          parts of the USERS command.  The nickname list is not sent anymore
          by the server.  Only Client ID and mode lists are sent in the USERS
          command.  Changed this also to the protocol specification.
          The client now resolves the names and stuff after it receives
          the USERS list from the server when joining to the channel.

        * WHOIS and IDENTIFY commands has been changed to support multiple
          Client ID's per command.  One can now search for multiple users
          in the network by sending only one WHOIS or IDENTIFY command.
          Changed the code and the protocol specifications.

        * Removed silc_server_command_identify_parse and changed that IDENTIFY
          uses silc_server_command_whois_parse to parse the request.

        * If normal server, do not parse the WHOIS and IDENTIFY requests
          before sending it to the router.  Saves some time.

        * Fixed JOIN command on client library.  Wrong number of arguments
          used to crash the client.

        * Added silc_server_channel_has_global function to check whether
          channel has global users or not.

        * Added silc_server_channel_has_local function to check whether channel
          has locally connected clients on the channel.

        * The silc_server_remove_from_one_channel now checks whether the
          channel has global users or not after given client was removed from
          the channel.  It also checks whether the channel has local clients
          on the channel anymore.  If it does not have then the channel entry
          is removed as it is not needed anymore.

        * The silc_server_notify now checks on JOIN notify whether the joining
          client is one of locally connected or global.  If it is global then
          the channel has now global users on the channel and that is marked
          to the channel entry.  Also, it now saves the global client to
          global list who is joining and JOINs it to the channel.  This is
          for normal server, that is.

          Changed silc_server_send_notify_on_channel,
          silc_server_packet_relay_to_channel and
          silc_server_packet_send_to_channel check if we are normal server
          and client has router set (ie. global client) do not send the
          message to that client, as it is already routed to our router.

        * Implemented LEAVE notify type handling in silc_server_notify
          function.

        * Tested LEAVE command in router environment successfully.  Tested
          with two routers, two servers and two clients.

        * Updated TODO.

        * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.

        * Implemented SIGNOFF notify type handling in silc_server_notify
          function.

        * silc_server_remove_id now removes the client entry from all channels
          it has joined and thusly sends SIGNOFF notify type.

        * Rewrote the NAMES list generation in server by removing two excess
          loops.  The lists are created now inside one loop.

        * silc_server_remove_channel_user checks now also global list
          for channel and client.

        * silc_server_new_channel_user checks now both local and global
          list for channel and client.  Fixed a bug in client id decoding.
          Used to decode wrong buffer.

        * silc_server_channel_message checks now both local and global
          list for channel entry.

        * Tested channel joining (hence JOIN) in router environment
          successfully.  Tested with two routers, two servers and two
          clients.

        * Tested channel message sending in router environment successfully.

        * Added silc_server_save_channel_key into server.[ch] to save the
          received channel key in Channel Key payload processing. It is
          also used in JOIN command reply handling.
          Equivalent function silc_client_save_channel_key added into
          client.[ch] into client library.

        * Changed JOIN command reply to send information whether the channel
          was created or not (is existing already) and the channel key
          payload.  Changed protocol specs accordingly.

        * Fixed bugs in WHOIS and IDENTIFY command reply sending when
          the request was sent by ID and not by nickname.  Crashed on
          NULL dereference.

        * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
          now correctly save the received data.

        * silc_server_free_sock_user_data now notifies routers in the
          network about entities leaving the network.

          At the same time implemented functions silc_server_remove_id
          and silc_server_send_remove_id to receive and send REMOVE_ID
          packets.  The packet is used to notify routers in the network
          about leaving entities.  The ID removed will become invalid in
          the network.

        * Added function silc_idlist_del_server into server. Removes and
          free's server entry from ID list.

        * silc_server_private_message function now checks, if we are router,
          that the destination ID really is valid ID, naturally.

        * In router when NEW_ID packet is received (for new client) the
          hash of the Client ID is saved in the ID Cache but the
          client->nickname is set to NULL, instead of putting the hash
          to it as well.

          IDENTIFY command now also checks that client->nickname must be
          valid. If it is not if will request the data from the server who
          owns the client.  Added new function
          silc_server_command_identify_check.

        * Added silc_command_set_command into lib/silccore/silcommand.[ch]
          to set the command to already allocated Command Payload.

        * Tested private message sending in router environment with two
          routers, two servers and two clients.  Fixed minor bugs and now
          it works fine.

        * Fixed segfault from client's NAMES command. Used to crash if
          not on any channel.

        * Forwarded packets must not be routed even if it is not destined
          to the receiver.  Changed server code comply with this.

        * Added `require_reverse_mapping' boolean value to ServerParams
          structure. If TRUE (not default) the server will requirese
 	  mapping is not required and hostname could not be
          found the IP address is used as hostname.

	Pekka
________________________________________________________________________
 Pekka Riikonen                    | Email: priikone@poseidon.pspt.fi
 SSH Communications Security Corp. | http://poseidon.pspt.fi/~priikone
 Tel. +358 (0)40 580 6673          | Kasarmikatu 11 A4, SF-70110 Kuopio
 PGP KeyID A924ED4F: http://poseidon.pspt.fi/~priikone/pubkey.asc



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic