commit c5168f9ee82f8e96f52c6263a76e51e9016d735c Author: Pekka Riikonen Date: Thu Jan 8 11:31:48 2009 +0200 Documented public_ip field commit 6e596af78adee828595e00a0988625453f9ecbc9 Author: Skywing Date: Sat Dec 13 16:27:48 2008 -0500 Don't decrement my_clients when killing or expiring a detached client. This prevents my_clients from getting out of sync when a detached client is forcibly removed, fixing a regression. commit aff29861afd2c1344bde46f8d997a53919274a1a Author: Skywing Date: Sat Dec 13 14:15:15 2008 -0500 Cancel future rekeys on a detaching client connection. Previously, these wouldn't be cancelled properly, and might result in some complaints from the SILC SKE library due to bad parameters. commit 2652f16abc04e55355d948a10d92ce9771ca1f4b Author: Skywing Date: Sat Dec 13 13:43:25 2008 -0500 Send resume notifications to previous owner server when client resumes. Previously, resume notifications were broadcast to all routers, but not necessarily the original owner of a particular detached user. This caused various breakage when a user was previously homed at a plain server and then resumed at a router server, as the users previous home server would never have been properly notified about the resume. commit 85f7454c353763cb25aa719409e656bfd8d878df Author: Skywing Date: Thu Dec 11 23:57:37 2008 -0500 Fix use-after-free condition when reconnecting silcd to router silcd. This fixes a use-after-free bug wherein silcd can reuse the context on the SilcPacketStream when we receive an EOS indication after the link was terminated due to a timeout error. commit ce742c4140e578ab25c84eef9c189892c3681214 Author: Skywing Date: Thu Dec 11 23:22:04 2008 -0500 Don't count detached users in server local user count. This commit decrements the count of users when a detach occurs, and increments the count when a user re-attaches. This is done as current silc routers have a bug where only a detached users previous home server is not properly pro-actively notified of a user resuming elsewhere unless the user resumes on a router server. The issue with non-router-server resume notification will be fixed seperately. This change allows member servers to operate reliably in the event that there is a router with the aforementioned bug in their silcnet. commit 4f370664520f87d3054cad72b9d011a684806632 Author: Skywing Date: Sun Nov 23 13:54:12 2008 -0500 Use primary router when sending WHOIS packet if client->router is NULL. client may be non-NULL, but client->router may be NULL when we enter silc_server_query_client in the case of a detached client on a remote server that has not been fully resolved yet. In this case, we should try and send the packet using the primary router. This fixes a crash wherein silc_server_query_client would sometimes crash with a NULL dereference if called on a remote detached client. commit b560ba10ed343202962d5575a988e1faec91e0db Author: Skywing Date: Sun Nov 23 13:54:12 2008 -0500 Use primary router when sending WHOIS packet if client->router is NULL. client may be non-NULL, but client->router may be NULL when we enter silc_server_query_client in the case of a detached client on a remote server that has not been fully resolved yet. In this case, we should try and send the packet using the primary router. This fixes a crash wherein silc_server_query_client would sometimes crash with a NULL dereference if called on a remote detached client. commit e85b8c3b0b68d9c5e82fa058683fb57595f37bd6 Author: Pekka Riikonen Date: Sun Nov 23 12:58:28 2008 +0200 silcd: disconnect packet errors with random timeout commit 5c43a88e369950a34b1c40d655b598bedd16beda Author: Skywing Date: Fri Nov 21 23:57:32 2008 -0500 Cancel silc_server_connect_to_router_retry when connecting. There exists a crash bug such that an un-cancelled timeout callback for silc_server_connect_to_retry fires after the connection object has already been cleaned up. Any router_retry requests must be cancelled when we are deleting the associated connect object. The fix that was implemented was to cancel silc_server_connect_to_router_retry in addition to silc_server_connect_to_router when a call to silc_server_create_connections is made. (This routine is called when we are to make new server connections if reconnects are enabled.) The problem would typically occur after a long enough time with silcd trying to connect to a router server over and over; there is a race condition component that can delay the initial use-after-free condition for some time. commit 068abf8c90f47d9b5d17fc1650b2b9f14ffd278c Author: Skywing Date: Fri Nov 21 21:24:07 2008 -0500 Mark outbound initiated server to server connections as local. This fixes an issue where if a disconnect packet is received by the server for an outbound silc connection (i.e. a server to server link) and there is an outstanding async operation, such as an SKE or connection auth, the server will corrupt the heap due to not properly calling the async abort routine. This issue would typically happen when we have a silcd setup to connect to a remote router server, where both ends of the connection have public keys configured, but the initiator server's IP is wrong. In this case, we will get past key exchange and then fail at the connection auth packet, typically crashing the initiator silcd after heap corruption. commit e69eab552f385361553ef94c80dd64040873a02f Author: Kp Date: Fri Jul 4 13:06:00 2008 -0500 Assert that the client count is positive prior to decrementing it. A situation has been observed where a silcd has clients connected to it, but reports 0 local users. It is believed that when these users log off, the server underflows and refuses new connections. Assert that no underflow occurs, which should prove or disprove this theory. commit 985f57f253454fde2875f3623d76635d90a273cc Author: Skywing Date: Fri Jun 27 00:16:37 2008 -0500 Add ``ExternalIp'' config directive to ServerInfo tag in silcd.conf. This allows server linking with a server behind a NAT connecting out to a router. apps/silcd/command.c | 13 ++ apps/silcd/idlist.h | 11 ++ apps/silcd/packet_receive.c | 39 ++++++- apps/silcd/server.c | 34 +++++- apps/silcd/server.h | 1 + apps/silcd/server_internal.h | 24 +---- apps/silcd/server_query.c | 3 +- apps/silcd/server_util.c | 10 ++- apps/silcd/serverconfig.c | 2 +- apps/silcmap/silcmap_bitmap.c | 2 +-