+Mon Mar 26 14:39:48 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Show the version of the remote client (or server) when connecting
+ to the server. It is logged to the log file. Affected file
+ is silcd/protocol.c.
+
+ * Fixed the KILLED notify handling in the client library. The
+ client must be removed from all channels when receiving the
+ KILLED notify.
+
+ Also, do not remove the client entry when giving the KILL
+ command but when the KILLED notify is received.
+
Mon Mar 26 12:11:14 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Added silc_server_send_notify_invite to send the INVITE
{
SilcSKEStatus status = SILC_SKE_STATUS_OK;
+ SILC_LOG_INFO(("%s (%s) is version %s", ske->sock->hostname,
+ ske->sock->ip, version));
+
/* Check for initial version string */
if (!strstr(version, "SILC-1.0-"))
status = SILC_SKE_STATUS_BAD_VERSION;
/* If there is pending outgoing data for the client then purge it
to the network before removing the client entry. */
- if (SILC_IS_OUTBUF_PENDING(sock) && (SILC_IS_DISCONNECTED(sock) == FALSE)) {
+ if (sock && SILC_IS_OUTBUF_PENDING(sock) &&
+ (SILC_IS_DISCONNECTED(sock) == FALSE)) {
server->stat.packets_sent++;
if (sock->outbuf->data - sock->outbuf->head)
client->ops->notify(client, conn, type, client_entry, tmp);
if (client_entry != conn->local_entry) {
+ /* Remove client from all channels */
+ silc_client_remove_from_channels(client, conn, client_entry);
silc_idcache_del_by_id(conn->client_cache, SILC_ID_CLIENT,
client_entry->id);
if (client_entry->nickname)
/* Notify application */
COMMAND;
- /* Remove the client entry to be killed */
- silc_idcache_del_by_id(conn->client_cache, SILC_ID_CLIENT,
- target->id);
- if (target->nickname)
- silc_free(target->nickname);
- if (target->server)
- silc_free(target->server);
- if (target->id)
- silc_free(target->id);
- if (target->send_key)
- silc_cipher_free(target->send_key);
- if (target->receive_key)
- silc_cipher_free(target->receive_key);
- silc_free(target);
-
out:
if (nickname)
silc_free(nickname);