not needed and its usage is buggy when the context is registered
to multiple pending commands.
+ o Add perhaps an option of setting the nickname to the client context.
+ If set (and username != nickname) the client libary would send NICK
+ command to the server after connecting to automatically set the
+ nickname.
+
o Additions to do after protocol version 1.1:
o Fix the NICK_CHANGE notify handling not to create new entry
username and/or hostname is in the ban list the access to the
channel is denied. */
if (channel->ban_list) {
- if (!channel->ban_list ||
- silc_string_match(channel->ban_list, check) ||
+ if (silc_string_match(channel->ban_list, check) ||
silc_string_match(channel->ban_list, check2)) {
silc_server_command_send_status_reply(
cmd, SILC_COMMAND_JOIN,
server->router = NULL;
server->standalone = TRUE;
}
- silc_server_free_sock_user_data(server, sock);
+ silc_server_free_sock_user_data(server, sock, NULL);
silc_server_close_connection(server, sock);
out:
close the connection */
if (SILC_IS_DISCONNECTING(sock)) {
if (sock->user_data)
- silc_server_free_sock_user_data(server, sock);
+ silc_server_free_sock_user_data(server, sock, NULL);
silc_server_close_connection(server, sock);
return;
}
SILC_SET_DISCONNECTING(sock);
if (sock->user_data)
- silc_server_free_sock_user_data(server, sock);
+ silc_server_free_sock_user_data(server, sock, NULL);
else if (server->router_conn && server->router_conn->sock == sock &&
!server->router && server->standalone)
silc_schedule_task_add(server->schedule, 0,
SILC_SET_DISCONNECTING(sock);
if (sock->user_data)
- silc_server_free_sock_user_data(server, sock);
+ silc_server_free_sock_user_data(server, sock, NULL);
silc_server_close_connection(server, sock);
}
}
SilcSocketConnection sock,
SilcClientEntry client,
int notify,
- char *signoff)
+ const char *signoff)
{
FreeClientInternal i = silc_calloc(1, sizeof(*i));
entities. */
void silc_server_free_sock_user_data(SilcServer server,
- SilcSocketConnection sock)
+ SilcSocketConnection sock,
+ const char *signoff_message)
{
SILC_LOG_DEBUG(("Start"));
case SILC_SOCKET_TYPE_CLIENT:
{
SilcClientEntry user_data = (SilcClientEntry)sock->user_data;
- silc_server_free_client_data(server, sock, user_data, TRUE, NULL);
+ silc_server_free_client_data(server, sock, user_data, TRUE,
+ signoff_message);
break;
}
case SILC_SOCKET_TYPE_SERVER:
}
if (sock->user_data)
- silc_server_free_sock_user_data(server, sock);
+ silc_server_free_sock_user_data(server, sock, NULL);
silc_server_disconnect_remote(server, sock, "Server closed connection: "
"Connection timeout");
SilcSocketConnection sock,
SilcClientEntry client,
int notify,
- char *signoff);
+ const char *signoff);
void silc_server_free_sock_user_data(SilcServer server,
- SilcSocketConnection sock);
+ SilcSocketConnection sock,
+ const char *signoff_message);
void silc_server_remove_from_channels(SilcServer server,
SilcSocketConnection sock,
SilcClientEntry client,