X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-servers.c;h=c6cbdb4889ce46b0bc7fb4a4cd4715fee43f8dd1;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hp=c3e4932fa7b2288d087c5b7ae82bd57e0d1f90b3;hpb=bf652ec820e0d36d841832744a1c5221a4cb8f6c;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index c3e4932f..c6cbdb48 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -50,20 +50,20 @@ void silc_servers_reconnect_init(void); void silc_servers_reconnect_deinit(void); -static void silc_send_channel(SILC_SERVER_REC *server, - char *channel, char *msg) +static int silc_send_channel(SILC_SERVER_REC *server, + char *channel, char *msg, + SilcMessageFlags flags) { SILC_CHANNEL_REC *rec; rec = silc_channel_find(server, channel); if (rec == NULL || rec->entry == NULL) { - cmd_return_error(CMDERR_NOT_JOINED); - return; + cmd_return_error_value(CMDERR_NOT_JOINED, FALSE); } silc_client_send_channel_message(silc_client, server->conn, rec->entry, - NULL, SILC_MESSAGE_FLAG_UTF8, - msg, strlen(msg), TRUE); + NULL, flags, msg, strlen(msg), TRUE); + return TRUE; } typedef struct { @@ -134,8 +134,8 @@ static void silc_send_msg_clients(SilcClient client, g_free(rec); } -static void silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, - int msg_len, SilcMessageFlags flags) +static int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, + int msg_len, SilcMessageFlags flags) { PRIVMSG_REC *rec; SilcClientEntry *clients; @@ -145,7 +145,7 @@ static void silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, if (!silc_parse_userfqdn(nick, &nickname, NULL)) { printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_BAD_NICK, nick); - return; + return FALSE; } /* Find client entry */ @@ -163,7 +163,7 @@ static void silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, silc_client_get_clients(silc_client, server->conn, nickname, NULL, silc_send_msg_clients, rec); silc_free(nickname); - return; + return FALSE; } /* Send the private message directly */ @@ -171,6 +171,7 @@ static void silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg, silc_client_send_private_message(silc_client, server->conn, clients[0], flags, msg, msg_len, TRUE); + return TRUE; } void silc_send_mime(SILC_SERVER_REC *server, WI_ITEM_REC *to, @@ -249,7 +250,8 @@ static void send_message(SILC_SERVER_REC *server, char *target, } if (target_type == SEND_TARGET_CHANNEL) - silc_send_channel(server, target, message ? message : msg); + silc_send_channel(server, target, message ? message : msg, + SILC_MESSAGE_FLAG_UTF8); else silc_send_msg(server, target, message ? message : msg, message ? strlen(message) : strlen(msg), @@ -258,6 +260,18 @@ static void send_message(SILC_SERVER_REC *server, char *target, silc_free(message); } +void silc_send_heartbeat(SilcSocketConnection sock, + void *hb_context) +{ + SILC_SERVER_REC *server = SILC_SERVER(hb_context); + + if (server == NULL) + return; + + silc_client_send_packet(silc_client, server->conn, SILC_PACKET_HEARTBEAT, + NULL, 0); +} + static void sig_connected(SILC_SERVER_REC *server) { SilcClientConnection conn; @@ -299,6 +313,13 @@ static void sig_connected(SILC_SERVER_REC *server) /* Put default attributes */ silc_query_attributes_default(silc_client, conn); + /* initialize heartbeat sending */ + if (settings_get_int("heartbeat") > 0) + silc_socket_set_heartbeat(conn->sock, settings_get_int("heartbeat"), + (void *)server, + (SilcSocketConnectionHBCb)silc_send_heartbeat, + silc_client->schedule); + server->ftp_sessions = silc_dlist_init(); server->isnickflag = isnickflag_func; server->ischannel = ischannel_func; @@ -395,7 +416,7 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: KEY MSG set|unset|list|agreement|negotiate [] */ /* SYNTAX: KEY CHANNEL set|unset|list|change [] */ /* SYNTAX: KICK [@] [] */ -/* SYNTAX: KILL [@] [] */ +/* SYNTAX: KILL [@] [] [-pubkey] */ /* SYNTAX: OPER [-pubkey] */ /* SYNTAX: SILCOPER [-pubkey] */ /* SYNTAX: TOPIC [] */ @@ -416,8 +437,8 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: PING */ /* SYNTAX: SCONNECT [] */ /* SYNTAX: USERS */ -/* SYNTAX: FILE SEND [ []] */ -/* SYNTAX: FILE RECEIVE [] */ +/* SYNTAX: FILE SEND [ []] [-no-listener]*/ +/* SYNTAX: FILE ACCEPT [] */ /* SYNTAX: FILE CLOSE [] */ /* SYNTAX: FILE */ /* SYNTAX: JOIN [] [-cipher ] [-hmac ] [-founder] */ @@ -425,45 +446,18 @@ char *silc_server_get_channels(SILC_SERVER_REC *server) /* SYNTAX: WATCH [<-add | -del> ] */ /* SYNTAX: STATS */ /* SYNTAX: ATTR [<-del>