[Pkg-silc-commits] r311 - in /silc-server/trunk: ./ apps/ apps/silcd/ debian/ doc/ includes/ lib/ lib/contrib/ lib/silcapputil/ lib/silcasn1/ lib/silccore/ lib/silccrypt/ lib/silchttp/ lib/silcmath/ lib/silcske/ lib/silcskr/ lib/silcutil/
micah at users.alioth.debian.org
micah at users.alioth.debian.org
Tue Oct 7 16:33:59 UTC 2008
Author: micah
Date: Tue Oct 7 16:33:59 2008
New Revision: 311
URL: http://svn.debian.org/wsvn/pkg-silc/?sc=1&rev=311
Log:
finish svn-upgrade of new silc-server
Modified:
silc-server/trunk/ChangeLog
silc-server/trunk/Makefile.am
silc-server/trunk/Makefile.in
silc-server/trunk/apps/Makefile.am
silc-server/trunk/apps/Makefile.in
silc-server/trunk/apps/silcd/command.c
silc-server/trunk/apps/silcd/packet_send.c
silc-server/trunk/apps/silcd/server.c
silc-server/trunk/apps/silcd/server_backup.c
silc-server/trunk/apps/silcd/server_util.c
silc-server/trunk/apps/silcd/silc-server.spec
silc-server/trunk/apps/silcd/silcd.c
silc-server/trunk/configure
silc-server/trunk/configure.ac
silc-server/trunk/debian/changelog
silc-server/trunk/doc/Makefile.am
silc-server/trunk/doc/Makefile.in
silc-server/trunk/doc/example_silcd.conf.in
silc-server/trunk/includes/Makefile.am
silc-server/trunk/includes/Makefile.in
silc-server/trunk/includes/silcdistdefs.h
silc-server/trunk/lib/Makefile.am
silc-server/trunk/lib/Makefile.in
silc-server/trunk/lib/contrib/Makefile.am
silc-server/trunk/lib/contrib/Makefile.in
silc-server/trunk/lib/silcapputil/Makefile.am
silc-server/trunk/lib/silcapputil/Makefile.in
silc-server/trunk/lib/silcasn1/Makefile.am
silc-server/trunk/lib/silcasn1/Makefile.in
silc-server/trunk/lib/silcasn1/silcasn1.c
silc-server/trunk/lib/silcasn1/silcasn1_encode.c
silc-server/trunk/lib/silccore/Makefile.am
silc-server/trunk/lib/silccore/Makefile.in
silc-server/trunk/lib/silccore/silcpacket.c
silc-server/trunk/lib/silccore/silcpacket.h
silc-server/trunk/lib/silccrypt/Makefile.am
silc-server/trunk/lib/silccrypt/Makefile.in
silc-server/trunk/lib/silchttp/Makefile.am
silc-server/trunk/lib/silchttp/Makefile.in
silc-server/trunk/lib/silcmath/Makefile.am
silc-server/trunk/lib/silcmath/Makefile.in
silc-server/trunk/lib/silcske/Makefile.am
silc-server/trunk/lib/silcske/Makefile.in
silc-server/trunk/lib/silcske/silcske.c
silc-server/trunk/lib/silcskr/Makefile.am
silc-server/trunk/lib/silcskr/Makefile.in
silc-server/trunk/lib/silcutil/Makefile.am
silc-server/trunk/lib/silcutil/Makefile.in
silc-server/trunk/lib/silcutil/silcstack.c
silc-server/trunk/lib/silcutil/silctypes.h
silc-server/trunk/lib/silcutil/silcutil.c
Modified: silc-server/trunk/ChangeLog
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/ChangeLog?rev=311&op=diff
==============================================================================
--- silc-server/trunk/ChangeLog (original)
+++ silc-server/trunk/ChangeLog Tue Oct 7 16:33:59 2008
@@ -1,17 +1,64 @@
-commit 4d26d9f598384d7cd49c6238ea4a81b9f4e6f212
+commit 8bb22be757768c18af7a5381b3b18d4983dfa9d4
Author: Pekka Riikonen <priikone at silcnet.org>
-Date: Sun Jun 22 17:42:40 2008 +0300
+Date: Wed Sep 24 17:56:56 2008 +0300
- Remove client from expired client list before deleting it
+ Disconnect problem: Mark incoming connections immediately local
+
+ This fixes the problem of SKE remaining running in the background
+ even though the conncection is closed because it was never aborted
+ because the connection wasn't marked local. After SKE timeout a
+ crash may occur.
-commit 32607f5db7ea3393765be5421e754ef191894dd5
+commit 35f90f6e65d24d42ba1988ff91f2842fe9c386b5
Author: Pekka Riikonen <priikone at silcnet.org>
-Date: Sun Jun 22 16:56:36 2008 +0300
+Date: Wed Sep 24 16:53:38 2008 +0300
- Fixed the silc_parse_userqfdn argument handling, again.
+ Fixed more backup router reconnecting problems
+
+ Fixed also possible buffer overflows.
- apps/silcd/command_reply.c | 2 ++
- apps/silcd/packet_receive.c | 7 ++++++-
- apps/silcd/server_util.c | 3 +++
- lib/silcutil/silcutil.c | 8 +++++---
- 4 files changed, 16 insertions(+), 4 deletions(-)
+commit 4647050fc1a99a44f4ffeb002c0ba1c353695ec0
+Author: Pekka Riikonen <priikone at localhost.localdomain>
+Date: Wed Sep 24 08:46:28 2008 +0300
+
+ Fixed server/backup router reconnecting
+
+commit 35135dcd998899182a78e7742b753c2bec72d923
+Author: Skywing <skywing at valhallalegends.com>
+Date: Fri Jun 20 17:37:21 2008 -0500
+
+ Make packet stream reference counts 32 bits.
+
+commit 55401f49c984e35e652eb590bdcefa07387ddd44
+Author: Skywing <skywing at valhallalegends.com>
+Date: Fri Jun 20 16:19:32 2008 -0500
+
+ Fix double free in silcd.
+
+commit 3661cbc69ce24b5230c8602b24927eb841933b5e
+Author: Kp <kp at valhallalegends.com>
+Date: Sun Jun 1 12:59:42 2008 -0500
+
+ Packet streams: avoid double free if silc_id_id2str fails.
+
+ In silc_packet_set_ids, the old ID is freed before silc_id_id2str is
+ called. If silc_id_id2str fails, then silc_packet_set_ids returns
+ without resetting the ID pointer. The pointer is then free, but not
+ NULL. When the packet stream is destroyed, silc_packet_stream_destroy
+ will free the pointer again. Reset the ID pointer to NULL immediately
+ after freeing it to prevent this.
+
+commit 7ebc6fcc9308c92130d59641b9f85341e609708b
+Author: Kp <kp at valhallalegends.com>
+Date: Sun Jun 1 12:25:50 2008 -0500
+
+ Packet streams: fix memory leak on dlist allocation failure.
+
+ If silc_dlist_init fails to allocate a SilcDList for stream->process,
+ then silc_packet_stream_link_va leaks the newly allocated
+ SilcPacketProcess. Fix that by calling silc_free(p) on the error path.
+
+ apps/silcd/command.c | 30 +++--
+ apps/silcd/server.c | 151 +++++++++++++++++++++----
+ apps/silcd/server_backup.c | 9 +-
+ apps/silcd/server_util.c | 11 ++-
Modified: silc-server/trunk/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/Makefile.am (original)
+++ silc-server/trunk/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./Makefile.ad file in the source tree.
# Source: ./Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/Makefile.in (original)
+++ silc-server/trunk/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./Makefile.ad file in the source tree.
# Source: ./Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/apps/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/Makefile.am (original)
+++ silc-server/trunk/apps/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./apps/Makefile.ad file in the source tree.
# Source: ./apps/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/apps/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/Makefile.in (original)
+++ silc-server/trunk/apps/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./apps/Makefile.ad file in the source tree.
# Source: ./apps/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/apps/silcd/command.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/command.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/command.c (original)
+++ silc-server/trunk/apps/silcd/command.c Tue Oct 7 16:33:59 2008
@@ -1289,7 +1289,7 @@
/* Send invite list back only if the list was modified, or no arguments
was given. */
- type = 0;
+ ttype = 0;
argc = silc_argument_get_arg_num(cmd->args);
if (argc == 1)
ttype = 1;
@@ -1303,7 +1303,7 @@
2, tmp, len,
3, ttype && list ?
list->data : NULL,
- type && list ? silc_buffer_len(list) : 0);
+ ttype && list ? silc_buffer_len(list) : 0);
silc_buffer_free(list);
out:
@@ -1472,12 +1472,19 @@
/* Do normal signoff for the destination client */
sock = remote_client->connection;
+
+ if (sock)
+ silc_packet_stream_ref(sock);
+
silc_server_remove_from_channels(server, NULL, remote_client,
TRUE, (char *)"Killed", TRUE, TRUE);
silc_server_free_sock_user_data(server, sock, comment ? comment :
(unsigned char *)"Killed");
- if (sock)
+ if (sock) {
+ silc_packet_set_context(sock, NULL);
silc_server_close_connection(server, sock);
+ silc_packet_stream_unref(sock);
+ }
} else {
/* Router operator killing */
@@ -1557,12 +1564,13 @@
char info_string[256];
memset(info_string, 0, sizeof(info_string));
- snprintf(info_string, sizeof(info_string),
- "location: %s server: %s admin: %s <%s>",
- server->config->server_info->location,
- server->config->server_info->server_type,
- server->config->server_info->admin,
- server->config->server_info->email);
+ silc_snprintf(info_string, sizeof(info_string),
+ "location: %s server: %s admin: %s <%s> version: %s",
+ server->config->server_info->location,
+ server->config->server_info->server_type,
+ server->config->server_info->admin,
+ server->config->server_info->email,
+ silc_dist_version);
server_info = info_string;
entry = server->id_entry;
@@ -2821,7 +2829,7 @@
SilcServer server = cmd->server;
SilcClientEntry client = silc_packet_get_context(cmd->sock);
unsigned char *tmp_mask, m[4];
- SilcUInt32 mask = 0;
+ SilcUInt32 mask = 0, tmp_len;
SilcUInt16 ident = silc_command_get_ident(cmd->payload);
SilcBool set_mask = FALSE;
@@ -2831,8 +2839,8 @@
SILC_SERVER_COMMAND_CHECK(SILC_COMMAND_UMODE, cmd, 1, 2);
/* Get the client's mode mask */
- tmp_mask = silc_argument_get_arg_type(cmd->args, 2, NULL);
- if (tmp_mask) {
+ tmp_mask = silc_argument_get_arg_type(cmd->args, 2, &tmp_len);
+ if (tmp_mask && tmp_len == 4) {
SILC_GET32_MSB(mask, tmp_mask);
set_mask = TRUE;
}
@@ -2945,7 +2953,7 @@
/* Get the channel mode mask */
tmp_mask = silc_argument_get_arg_type(cmd->args, 2, &tmp_len);
- if (tmp_mask) {
+ if (tmp_mask && tmp_len == 4) {
SILC_GET32_MSB(mode_mask, tmp_mask);
set_mask = TRUE;
}
Modified: silc-server/trunk/apps/silcd/packet_send.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/packet_send.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/packet_send.c (original)
+++ silc-server/trunk/apps/silcd/packet_send.c Tue Oct 7 16:33:59 2008
@@ -771,6 +771,10 @@
va_start(ap, argc);
packet = silc_notify_payload_encode(type, argc, ap);
+ if (!packet) {
+ va_end(ap);
+ return;
+ }
silc_server_packet_send(server, sock, SILC_PACKET_NOTIFY,
broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
packet->data, silc_buffer_len(packet));
@@ -801,9 +805,10 @@
SilcBuffer packet;
packet = silc_notify_payload_encode_args(type, argc, args);
- silc_server_packet_send(server, sock, SILC_PACKET_NOTIFY,
- broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
- packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send(server, sock, SILC_PACKET_NOTIFY,
+ broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
+ packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
}
@@ -821,10 +826,11 @@
idp1 = silc_id_payload_encode((void *)old_id, SILC_ID_CHANNEL);
idp2 = silc_id_payload_encode((void *)new_id, SILC_ID_CHANNEL);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_CHANNEL_CHANGE,
- 2, idp1->data, silc_buffer_len(idp1),
- idp2->data, silc_buffer_len(idp2));
+ if (idp1 && idp2)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_CHANNEL_CHANGE,
+ 2, idp1->data, silc_buffer_len(idp1),
+ idp2->data, silc_buffer_len(idp2));
silc_buffer_free(idp1);
silc_buffer_free(idp2);
}
@@ -844,11 +850,12 @@
idp1 = silc_id_payload_encode((void *)old_id, SILC_ID_CLIENT);
idp2 = silc_id_payload_encode((void *)new_id, SILC_ID_CLIENT);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_NICK_CHANGE,
- 3, idp1->data, silc_buffer_len(idp1),
- idp2->data, silc_buffer_len(idp2),
- nickname, nickname ? strlen(nickname) : 0);
+ if (idp1 && idp2)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_NICK_CHANGE,
+ 3, idp1->data, silc_buffer_len(idp1),
+ idp2->data, silc_buffer_len(idp2),
+ nickname, nickname ? strlen(nickname) : 0);
silc_buffer_free(idp1);
silc_buffer_free(idp2);
}
@@ -866,9 +873,11 @@
idp1 = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
idp2 = silc_id_payload_encode((void *)channel->id, SILC_ID_CHANNEL);
- silc_server_send_notify(server, sock, broadcast, SILC_NOTIFY_TYPE_JOIN,
- 2, idp1->data, silc_buffer_len(idp1),
- idp2->data, silc_buffer_len(idp2));
+
+ if (idp1 && idp2)
+ silc_server_send_notify(server, sock, broadcast, SILC_NOTIFY_TYPE_JOIN,
+ 2, idp1->data, silc_buffer_len(idp1),
+ idp2->data, silc_buffer_len(idp2));
silc_buffer_free(idp1);
silc_buffer_free(idp2);
}
@@ -885,9 +894,10 @@
SilcBuffer idp;
idp = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
- silc_server_send_notify_dest(server, sock, broadcast, (void *)channel->id,
- SILC_ID_CHANNEL, SILC_NOTIFY_TYPE_LEAVE,
- 1, idp->data, silc_buffer_len(idp));
+ if (idp)
+ silc_server_send_notify_dest(server, sock, broadcast, (void *)channel->id,
+ SILC_ID_CHANNEL, SILC_NOTIFY_TYPE_LEAVE,
+ 1, idp->data, silc_buffer_len(idp));
silc_buffer_free(idp);
}
@@ -910,6 +920,8 @@
unsigned char mode[4], ulimit[4];
idp = silc_id_payload_encode((void *)id, id_type);
+ if (!idp)
+ return;
SILC_PUT32_MSB(mode_mask, mode);
if (founder_key)
fkey = silc_public_key_payload_encode(founder_key);
@@ -955,6 +967,8 @@
idp1 = silc_id_payload_encode((void *)id, id_type);
idp2 = silc_id_payload_encode((void *)target, SILC_ID_CLIENT);
+ if (!idp1 || !idp2)
+ return;
SILC_PUT32_MSB(mode_mask, mode);
if (founder_key)
fkey = silc_public_key_payload_encode(founder_key);
@@ -986,10 +1000,11 @@
SilcBuffer idp;
idp = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_SIGNOFF,
- message ? 2 : 1, idp->data, silc_buffer_len(idp),
- message, message ? strlen(message): 0);
+ if (idp)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_SIGNOFF,
+ message ? 2 : 1, idp->data, silc_buffer_len(idp),
+ message, message ? strlen(message): 0);
silc_buffer_free(idp);
}
@@ -1008,12 +1023,13 @@
SilcBuffer idp;
idp = silc_id_payload_encode(id, id_type);
- silc_server_send_notify_dest(server, sock, broadcast,
- (void *)channel->id, SILC_ID_CHANNEL,
- SILC_NOTIFY_TYPE_TOPIC_SET,
- topic ? 2 : 1,
- idp->data, silc_buffer_len(idp),
- topic, topic ? strlen(topic) : 0);
+ if (idp)
+ silc_server_send_notify_dest(server, sock, broadcast,
+ (void *)channel->id, SILC_ID_CHANNEL,
+ SILC_NOTIFY_TYPE_TOPIC_SET,
+ topic ? 2 : 1,
+ idp->data, silc_buffer_len(idp),
+ topic, topic ? strlen(topic) : 0);
silc_buffer_free(idp);
}
@@ -1035,11 +1051,13 @@
idp1 = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
idp2 = silc_id_payload_encode((void *)kicker, SILC_ID_CLIENT);
- silc_server_send_notify_dest(server, sock, broadcast, (void *)channel->id,
- SILC_ID_CHANNEL, SILC_NOTIFY_TYPE_KICKED, 3,
- idp1->data, silc_buffer_len(idp1),
- comment, comment ? strlen(comment) : 0,
- idp2->data, silc_buffer_len(idp2));
+
+ if (idp1 && idp2)
+ silc_server_send_notify_dest(server, sock, broadcast, (void *)channel->id,
+ SILC_ID_CHANNEL, SILC_NOTIFY_TYPE_KICKED, 3,
+ idp1->data, silc_buffer_len(idp1),
+ comment, comment ? strlen(comment) : 0,
+ idp2->data, silc_buffer_len(idp2));
silc_buffer_free(idp1);
silc_buffer_free(idp2);
}
@@ -1060,11 +1078,13 @@
idp1 = silc_id_payload_encode(client_id, SILC_ID_CLIENT);
idp2 = silc_id_payload_encode(killer, killer_type);
- silc_server_send_notify_dest(server, sock, broadcast, (void *)client_id,
- SILC_ID_CLIENT, SILC_NOTIFY_TYPE_KILLED,
- 3, idp1->data, silc_buffer_len(idp1),
- comment, comment ? strlen(comment) : 0,
- idp2->data, silc_buffer_len(idp2));
+
+ if (idp1 && idp2)
+ silc_server_send_notify_dest(server, sock, broadcast, (void *)client_id,
+ SILC_ID_CLIENT, SILC_NOTIFY_TYPE_KILLED,
+ 3, idp1->data, silc_buffer_len(idp1),
+ comment, comment ? strlen(comment) : 0,
+ idp2->data, silc_buffer_len(idp2));
silc_buffer_free(idp1);
silc_buffer_free(idp2);
}
@@ -1085,10 +1105,11 @@
idp = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
SILC_PUT32_MSB(mode_mask, mode);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_UMODE_CHANGE, 2,
- idp->data, silc_buffer_len(idp),
- mode, 4);
+ if (idp)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_UMODE_CHANGE, 2,
+ idp->data, silc_buffer_len(idp),
+ mode, 4);
silc_buffer_free(idp);
}
@@ -1106,12 +1127,14 @@
SilcBuffer idp;
idp = silc_id_payload_encode((void *)channel->id, SILC_ID_CHANNEL);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_BAN, 3,
- idp->data, silc_buffer_len(idp),
- action ? action : NULL, action ? 1 : 0,
- list ? list->data : NULL,
- list ? silc_buffer_len(list) : 0);
+
+ if (idp)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_BAN, 3,
+ idp->data, silc_buffer_len(idp),
+ action ? action : NULL, action ? 1 : 0,
+ list ? list->data : NULL,
+ list ? silc_buffer_len(list) : 0);
silc_buffer_free(idp);
}
@@ -1132,14 +1155,17 @@
idp = silc_id_payload_encode((void *)channel->id, SILC_ID_CHANNEL);
idp2 = silc_id_payload_encode((void *)client_id, SILC_ID_CLIENT);
- silc_server_send_notify(server, sock, broadcast,
- SILC_NOTIFY_TYPE_INVITE, 5,
- idp->data, silc_buffer_len(idp),
- channel->channel_name, strlen(channel->channel_name),
- idp2->data, silc_buffer_len(idp2),
- action ? action : NULL, action ? 1 : 0,
- list ? list->data : NULL,
- list ? silc_buffer_len(list) : 0);
+
+ if (idp && idp2)
+ silc_server_send_notify(server, sock, broadcast,
+ SILC_NOTIFY_TYPE_INVITE, 5,
+ idp->data, silc_buffer_len(idp),
+ channel->channel_name,
+ strlen(channel->channel_name),
+ idp2->data, silc_buffer_len(idp2),
+ action ? action : NULL, action ? 1 : 0,
+ list ? list->data : NULL,
+ list ? silc_buffer_len(list) : 0);
silc_buffer_free(idp);
silc_buffer_free(idp2);
}
@@ -1159,6 +1185,8 @@
unsigned char mode[4], n[2];
idp = silc_id_payload_encode(client->id, SILC_ID_CLIENT);
+ if (!idp)
+ return;
SILC_PUT16_MSB(type, n);
SILC_PUT32_MSB(client->mode, mode);
if (public_key)
@@ -1192,6 +1220,10 @@
va_start(ap, argc);
packet = silc_notify_payload_encode(type, argc, ap);
+ if (!packet) {
+ va_end(ap);
+ return;
+ }
silc_server_packet_send_dest(server, sock, SILC_PACKET_NOTIFY,
broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
dest_id, dest_id_type,
@@ -1232,10 +1264,11 @@
va_start(ap, argc);
packet = silc_notify_payload_encode(type, argc, ap);
- silc_server_packet_send_to_channel(server, sender, channel,
- SILC_PACKET_NOTIFY, route_notify,
- send_to_clients,
- packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send_to_channel(server, sender, channel,
+ SILC_PACKET_NOTIFY, route_notify,
+ send_to_clients,
+ packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
va_end(ap);
}
@@ -1277,6 +1310,10 @@
va_start(ap, argc);
packet = silc_notify_payload_encode(type, argc, ap);
+ if (!packet) {
+ va_end(ap);
+ return;
+ }
data = packet->data;
data_len = silc_buffer_len(packet);
@@ -1370,9 +1407,10 @@
SILC_LOG_DEBUG(("Sending new ID"));
idp = silc_id_payload_encode(id, id_type);
- silc_server_packet_send(server, sock, SILC_PACKET_NEW_ID,
- broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
- idp->data, silc_buffer_len(idp));
+ if (idp)
+ silc_server_packet_send(server, sock, SILC_PACKET_NEW_ID,
+ broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
+ idp->data, silc_buffer_len(idp));
silc_buffer_free(idp);
}
@@ -1401,10 +1439,10 @@
/* Encode the channel payload */
packet = silc_channel_payload_encode(channel_name, name_len,
cid, channel_id_len, mode);
-
- silc_server_packet_send(server, sock, SILC_PACKET_NEW_CHANNEL,
- broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
- packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send(server, sock, SILC_PACKET_NEW_CHANNEL,
+ broadcast ? SILC_PACKET_FLAG_BROADCAST : 0,
+ packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
}
@@ -1468,8 +1506,9 @@
va_start(ap, argc);
packet = silc_command_payload_encode_vap(command, ident, argc, ap);
- silc_server_packet_send(server, sock, SILC_PACKET_COMMAND, 0,
- packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send(server, sock, SILC_PACKET_COMMAND, 0,
+ packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
va_end(ap);
}
@@ -1495,8 +1534,9 @@
packet = silc_command_reply_payload_encode_vap(command, status, error,
ident, argc, ap);
- silc_server_packet_send(server, sock, SILC_PACKET_COMMAND_REPLY, 0,
- packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send(server, sock, SILC_PACKET_COMMAND_REPLY, 0,
+ packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
va_end(ap);
}
@@ -1524,9 +1564,10 @@
packet = silc_command_reply_payload_encode_vap(command, status, error,
ident, argc, ap);
- silc_server_packet_send_dest(server, sock, SILC_PACKET_COMMAND_REPLY, 0,
- dst_id, dst_id_type, packet->data,
- silc_buffer_len(packet));
+ if (packet)
+ silc_server_packet_send_dest(server, sock, SILC_PACKET_COMMAND_REPLY, 0,
+ dst_id, dst_id_type, packet->data,
+ silc_buffer_len(packet));
silc_buffer_free(packet);
va_end(ap);
}
@@ -1541,6 +1582,9 @@
SilcBuffer packet;
packet = silc_buffer_alloc(4);
+ if (!packet)
+ return;
+
silc_buffer_pull_tail(packet, silc_buffer_truelen(packet));
silc_buffer_format(packet,
SILC_STR_UI_SHORT(conn_type),
@@ -1714,8 +1758,9 @@
va_start(ap, argc);
packet = silc_notify_payload_encode(type, argc, ap);
- silc_server_send_opers(server, SILC_PACKET_NOTIFY, 0,
- route, local, packet->data, silc_buffer_len(packet));
+ if (packet)
+ silc_server_send_opers(server, SILC_PACKET_NOTIFY, 0,
+ route, local, packet->data, silc_buffer_len(packet));
silc_buffer_free(packet);
va_end(ap);
}
Modified: silc-server/trunk/apps/silcd/server.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/server.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/server.c (original)
+++ silc-server/trunk/apps/silcd/server.c Tue Oct 7 16:33:59 2008
@@ -201,6 +201,8 @@
if (server->router_conn && server->router_conn->sock == stream &&
!server->router && server->standalone) {
+ if (idata->sconn && idata->sconn->callback)
+ (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context);
silc_server_create_connections(server);
silc_server_free_sock_user_data(server, stream, NULL);
} else {
@@ -212,6 +214,8 @@
server->backup_closed = TRUE;
}
+ if (idata->sconn && idata->sconn->callback)
+ (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context);
silc_server_free_sock_user_data(server, stream, NULL);
}
@@ -239,6 +243,8 @@
server->backup_closed = TRUE;
}
+ if (idata->sconn && idata->sconn->callback)
+ (*idata->sconn->callback)(server, NULL, idata->sconn->callback_context);
silc_server_free_sock_user_data(server, stream, NULL);
}
@@ -1322,7 +1328,8 @@
sconn->no_conf = dynamic;
sconn->server = server;
- SILC_LOG_DEBUG(("Created connection %p", sconn));
+ SILC_LOG_DEBUG(("Created connection %p to %s:%d", sconn,
+ remote_host, port));
silc_schedule_task_add_timeout(server->schedule, silc_server_connect_router,
sconn, 0, 0);
@@ -1353,7 +1360,15 @@
if (success == FALSE) {
/* Authentication failed */
- /* XXX retry connecting */
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
@@ -1448,6 +1463,15 @@
SILC_ID_SERVER),
NULL, sconn->sock);
if (!id_entry) {
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_free_sock_user_data(server, sconn->sock, NULL);
@@ -1462,6 +1486,7 @@
idata->status |= (SILC_IDLIST_STATUS_REGISTERED |
SILC_IDLIST_STATUS_LOCAL);
idata->sconn = sconn;
+ idata->sconn->callback = NULL;
/* Statistics */
server->stat.my_routers++;
@@ -1506,8 +1531,9 @@
silc_server_backup_add(server, server->id_entry, ip,
sconn->remote_port, TRUE);
}
+ }
#if 0
- } else {
+ else {
/* We already have primary router. Disconnect this connection */
SILC_LOG_DEBUG(("We already have primary router, disconnect"));
silc_idlist_del_server(server->global_list, id_entry);
@@ -1517,8 +1543,8 @@
silc_server_disconnect_remote(server, sconn->sock,
SILC_STATUS_ERR_RESOURCE_LIMIT, NULL);
return;
+ }
#endif /* 0 */
- }
} else {
/* Add this server to be our backup router */
id_entry->server_type = SILC_BACKUP_ROUTER;
@@ -1573,9 +1599,9 @@
{
SilcPacketStream sock = context;
SilcUnknownEntry entry = silc_packet_get_context(sock);
- SilcServerConnection sconn = entry->data.sconn;
- SilcServer server = entry->server;
- SilcServerConfigRouter *conn = sconn->conn.ref_ptr;
+ SilcServerConnection sconn;
+ SilcServer server;
+ SilcServerConfigRouter *conn;
SilcAuthMethod auth_meth = SILC_AUTH_NONE;
void *auth_data = NULL;
SilcUInt32 auth_data_len = 0;
@@ -1584,17 +1610,28 @@
SilcHmac hmac_send, hmac_receive;
SilcHash hash;
+ server = entry->server;
+ sconn = entry->data.sconn;
+ conn = sconn->conn.ref_ptr;
+ entry->op = NULL;
+
SILC_LOG_DEBUG(("Connection %p, SKE completed, entry %p", sconn, entry));
-
- entry->op = NULL;
if (status != SILC_SKE_STATUS_OK) {
/* SKE failed */
SILC_LOG_ERROR(("Error (%s) during Key Exchange protocol with %s (%s)",
silc_ske_map_status(status), entry->hostname, entry->ip));
-
- /* XXX retry connecting */
silc_ske_free(ske);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_free_sock_user_data(server, sconn->sock, NULL);
@@ -1608,11 +1645,18 @@
/* Set the keys into use. The data will be encrypted after this. */
if (!silc_ske_set_keys(ske, keymat, prop, &send_key, &receive_key,
&hmac_send, &hmac_receive, &hash)) {
-
- /* XXX retry connecting */
+ silc_ske_free(ske);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
/* Error setting keys */
- silc_ske_free(ske);
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_free_sock_user_data(server, sconn->sock, NULL);
@@ -1628,10 +1672,18 @@
connauth = silc_connauth_alloc(server->schedule, ske,
server->config->conn_auth_timeout);
if (!connauth) {
- /* XXX retry connecting */
+ silc_ske_free(ske);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
/** Error allocating auth protocol */
- silc_ske_free(ske);
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_free_sock_user_data(server, sconn->sock, NULL);
@@ -1688,6 +1740,16 @@
if (!sconn->sock) {
SILC_LOG_ERROR(("Cannot connect: cannot create packet stream"));
silc_stream_destroy(sconn->stream);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_connection_free(sconn);
@@ -1698,9 +1760,19 @@
/* Set source ID to packet stream */
if (!silc_packet_set_ids(sconn->sock, SILC_ID_SERVER, server->id,
0, NULL)) {
+ silc_packet_stream_destroy(sconn->sock);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
- silc_packet_stream_destroy(sconn->sock);
silc_server_connection_free(sconn);
return;
}
@@ -1709,6 +1781,18 @@
entry = silc_calloc(1, sizeof(*entry));
if (!entry) {
silc_packet_stream_destroy(sconn->sock);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
+ if (sconn->callback)
+ (*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_connection_free(sconn);
return;
}
@@ -1731,9 +1815,19 @@
server->public_key, server->private_key, sconn);
if (!ske) {
silc_free(entry);
+ silc_packet_stream_destroy(sconn->sock);
+
+ /* Try reconnecting if configuration wants it */
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ return;
+ }
+
if (sconn->callback)
(*sconn->callback)(server, NULL, sconn->callback_context);
- silc_packet_stream_destroy(sconn->sock);
silc_server_connection_free(sconn);
return;
}
@@ -1776,7 +1870,7 @@
/* If we've reached max retry count, give up. */
if ((sconn->retry_count > param->reconnect_count) &&
- !param->reconnect_keep_trying) {
+ sconn->no_reconnect) {
SILC_LOG_ERROR(("Could not connect, giving up"));
if (sconn->callback)
@@ -1823,10 +1917,16 @@
SILC_LOG_ERROR(("Could not connect to %s:%d: %s",
sconn->remote_host, sconn->remote_port,
silc_net_get_error_string(status)));
-
- if (sconn->callback)
- (*sconn->callback)(server, NULL, sconn->callback_context);
- silc_server_connection_free(sconn);
+ if (!sconn->no_reconnect) {
+ silc_schedule_task_add_timeout(sconn->server->schedule,
+ silc_server_connect_to_router_retry,
+ sconn, 1, 0);
+ silc_dlist_del(server->conns, sconn);
+ } else {
+ if (sconn->callback)
+ (*sconn->callback)(server, NULL, sconn->callback_context);
+ silc_server_connection_free(sconn);
+ }
break;
default:
@@ -1877,6 +1977,8 @@
SILC_LOG_INFO(("Unconfigured %s connection %s:%d, cannot connect",
(sconn->backup ? "backup router" : "router"),
sconn->remote_host, sconn->remote_port));
+ if (sconn->callback)
+ (*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_connection_free(sconn);
return;
}
@@ -1893,6 +1995,8 @@
if (!sconn->op) {
SILC_LOG_ERROR(("Could not connect to router %s:%d",
sconn->remote_host, sconn->remote_port));
+ if (sconn->callback)
+ (*sconn->callback)(server, NULL, sconn->callback_context);
silc_server_connection_free(sconn);
return;
}
@@ -1911,6 +2015,7 @@
SilcServer server = context;
SilcServerConnection sconn;
SilcServerConfigRouter *ptr;
+ SilcServerConfigConnParams *param;
/* Don't connect if we are shutting down. */
if (server->server_shutdown)
@@ -1986,6 +2091,8 @@
}
}
+ param = (ptr->param ? ptr->param : &server->config->param);
+
/* Allocate connection object for hold connection specific stuff. */
sconn = silc_calloc(1, sizeof(*sconn));
if (!sconn)
@@ -1998,6 +2105,7 @@
sconn->backup_replace_ip = strdup(ptr->backup_replace_ip);
sconn->backup_replace_port = ptr->backup_replace_port;
}
+ sconn->no_reconnect = param->reconnect_keep_trying == FALSE;
SILC_LOG_DEBUG(("Created connection %p", sconn));
@@ -2498,6 +2606,7 @@
sconn->remote_port = port;
silc_dlist_add(server->conns, sconn);
idata->sconn = sconn;
+ idata->sconn->callback = NULL;
idata->last_receive = time(NULL);
/* Add the common data structure to the ID entry. */
@@ -2712,6 +2821,7 @@
entry->port = port;
entry->server = server;
entry->data.conn_type = SILC_CONN_UNKNOWN;
+ entry->data.status |= SILC_IDLIST_STATUS_LOCAL;
silc_packet_set_context(packet_stream, entry);
SILC_LOG_DEBUG(("Created unknown connection %p", entry));
@@ -3153,7 +3263,7 @@
/* We'll need to constantly try to reconnect to the primary
router so that we'll see when it comes back online. */
- silc_server_create_connection(server, FALSE, FALSE, ip, port,
+ silc_server_create_connection(server, TRUE, FALSE, ip, port,
silc_server_backup_connected,
NULL);
}
Modified: silc-server/trunk/apps/silcd/server_backup.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/server_backup.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/server_backup.c (original)
+++ silc-server/trunk/apps/silcd/server_backup.c Tue Oct 7 16:33:59 2008
@@ -786,11 +786,16 @@
SilcServer server = app_context;
SilcServerConfigRouter *primary;
+ SILC_LOG_DEBUG(("Reconnecting"));
+
+ if (server->server_shutdown)
+ return;
+
primary = silc_server_config_get_primary_router(server);
if (primary) {
if (!silc_server_find_socket_by_host(server, SILC_CONN_ROUTER,
primary->host, primary->port))
- silc_server_create_connection(server, FALSE, FALSE,
+ silc_server_create_connection(server, TRUE, FALSE,
primary->host, primary->port,
silc_server_backup_connected,
context);
@@ -810,6 +815,7 @@
if (!server_entry) {
/* Try again */
+ SILC_LOG_DEBUG(("Connecting failed"));
silc_schedule_task_add_timeout(server->schedule,
silc_server_backup_connected_again,
context, 5, 0);
@@ -840,7 +846,7 @@
if (primary) {
if (!silc_server_find_socket_by_host(server, SILC_CONN_ROUTER,
primary->host, primary->port))
- silc_server_create_connection(server, FALSE, FALSE,
+ silc_server_create_connection(server, TRUE, FALSE,
primary->host, primary->port,
silc_server_backup_connect_primary,
context);
@@ -1040,7 +1046,7 @@
SILC_LOG_DEBUG(("Received START (session %d), reconnect to router",
ctx->session));
silc_packet_stream_ref(ctx->sock);
- silc_server_create_connection(server, FALSE, FALSE,
+ silc_server_create_connection(server, TRUE, FALSE,
primary->host, primary->port,
silc_server_backup_connect_primary,
ctx->sock);
Modified: silc-server/trunk/apps/silcd/server_util.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/server_util.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/server_util.c (original)
+++ silc-server/trunk/apps/silcd/server_util.c Tue Oct 7 16:33:59 2008
@@ -1547,8 +1547,17 @@
if (remote_client->connection) {
/* Remove locally conneted client */
SilcPacketStream sock = remote_client->connection;
+
+ if (sock)
+ silc_packet_stream_ref(sock);
+
silc_server_free_sock_user_data(server, sock, NULL);
- silc_server_close_connection(server, sock);
+
+ if (sock) {
+ silc_packet_set_context(sock, NULL);
+ silc_server_close_connection(server, sock);
+ silc_packet_stream_unref(sock);
+ }
} else {
/* Update statistics */
server->stat.clients--;
Modified: silc-server/trunk/apps/silcd/silc-server.spec
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/silc-server.spec?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/silc-server.spec (original)
+++ silc-server/trunk/apps/silcd/silc-server.spec Tue Oct 7 16:33:59 2008
@@ -1,6 +1,6 @@
Summary: SILC Server
Name: silc-server
-Version: 1.1.11
+Version: 1.1.13
Release: 0.fc8
License: GPL
Group: Applications/Communications
Modified: silc-server/trunk/apps/silcd/silcd.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/apps/silcd/silcd.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/apps/silcd/silcd.c (original)
+++ silc-server/trunk/apps/silcd/silcd.c Tue Oct 7 16:33:59 2008
@@ -745,8 +745,8 @@
silc_file_writefile(pidfile, buf, strlen(buf));
}
- silc_server_drop_privs(silcd);
- }
+ }
+ silc_server_drop_privs(silcd);
/* Run the server. When this returns the server has been stopped
and we will exit. */
Modified: silc-server/trunk/configure
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/configure?rev=311&op=diff
==============================================================================
--- silc-server/trunk/configure (original)
+++ silc-server/trunk/configure Tue Oct 7 16:33:59 2008
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for Server 1.1.11.
+# Generated by GNU Autoconf 2.61 for Server 1.1.13.
#
# Report bugs to <silc-devel at lists.silcnet.org>.
#
@@ -728,8 +728,8 @@
# Identity of this package.
PACKAGE_NAME='Server'
PACKAGE_TARNAME='silc-server'
-PACKAGE_VERSION='1.1.11'
-PACKAGE_STRING='Server 1.1.11'
+PACKAGE_VERSION='1.1.13'
+PACKAGE_STRING='Server 1.1.13'
PACKAGE_BUGREPORT='silc-devel at lists.silcnet.org'
# Factoring default headers for most tests.
@@ -1474,7 +1474,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Server 1.1.11 to adapt to many kinds of systems.
+\`configure' configures Server 1.1.13 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1545,7 +1545,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Server 1.1.11:";;
+ short | recursive ) echo "Configuration of Server 1.1.13:";;
esac
cat <<\_ACEOF
@@ -1668,7 +1668,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Server configure 1.1.11
+Server configure 1.1.13
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1682,7 +1682,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Server $as_me 1.1.11, which was
+It was created by Server $as_me 1.1.13, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2498,7 +2498,7 @@
# Define the identity of the package.
PACKAGE='silc-server'
- VERSION='1.1.11'
+ VERSION='1.1.13'
cat >>confdefs.h <<_ACEOF
@@ -31728,7 +31728,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Server $as_me 1.1.11, which was
+This file was extended by Server $as_me 1.1.13, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31781,7 +31781,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-Server config.status 1.1.11
+Server config.status 1.1.13
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
Modified: silc-server/trunk/configure.ac
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/configure.ac?rev=311&op=diff
==============================================================================
--- silc-server/trunk/configure.ac (original)
+++ silc-server/trunk/configure.ac Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the configure.ad file in the source tree.
# Source: configure.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
@@ -23,7 +23,7 @@
# GNU General Public License for more details.
#
-AC_INIT([Server], [1.1.11], [silc-devel at lists.silcnet.org], [silc-server])
+AC_INIT([Server], [1.1.13], [silc-devel at lists.silcnet.org], [silc-server])
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE
AC_PREREQ(2.52)
Modified: silc-server/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/debian/changelog?rev=311&op=diff
==============================================================================
--- silc-server/trunk/debian/changelog (original)
+++ silc-server/trunk/debian/changelog Tue Oct 7 16:33:59 2008
@@ -1,10 +1,14 @@
-silc-server (1.1.11-2) UNRELEASED; urgency=low
+silc-server (1.1.13-1) UNRELEASED; urgency=low
+ [ Daniel Kahn Gillmor ]
[ Daniel Kahn Gillmor]
* debian/control: cleaned up headers. Thanks, Lintian!
* postinst: changed /usr/sbin/silcd to silcd. Thanks, Lintian!
- -- Daniel Kahn Gillmor <dkg at fifthhorseman.net> Tue, 02 Sep 2008 13:23:20 -0400
+ [ Micah Anderson ]
+ * (NOT RELEASED YET) New upstream release
+
+ -- Micah Anderson <micah at debian.org> Tue, 07 Oct 2008 12:31:25 -0400
silc-server (1.1.11-1) unstable; urgency=low
Modified: silc-server/trunk/doc/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/doc/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/doc/Makefile.am (original)
+++ silc-server/trunk/doc/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./doc/Makefile.ad file in the source tree.
# Source: ./doc/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/doc/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/doc/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/doc/Makefile.in (original)
+++ silc-server/trunk/doc/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./doc/Makefile.ad file in the source tree.
# Source: ./doc/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/doc/example_silcd.conf.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/doc/example_silcd.conf.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/doc/example_silcd.conf.in (original)
+++ silc-server/trunk/doc/example_silcd.conf.in Tue Oct 7 16:33:59 2008
@@ -190,10 +190,12 @@
#
# Primary listener. Specify the IP address and the port to bind
- # the server.
+ # the server. The public_ip can be used to specify the public IP
+ # if the server is behind NAT.
#
Primary {
ip = "10.2.1.6";
+ # public_ip = "11.1.1.1";
port = 706;
};
Modified: silc-server/trunk/includes/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/includes/Makefile.am (original)
+++ silc-server/trunk/includes/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./includes/Makefile.ad file in the source tree.
# Source: ./includes/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/includes/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/includes/Makefile.in (original)
+++ silc-server/trunk/includes/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./includes/Makefile.ad file in the source tree.
# Source: ./includes/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/includes/silcdistdefs.h
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/includes/silcdistdefs.h?rev=311&op=diff
==============================================================================
--- silc-server/trunk/includes/silcdistdefs.h (original)
+++ silc-server/trunk/includes/silcdistdefs.h Tue Oct 7 16:33:59 2008
@@ -1,7 +1,7 @@
/*
Automatically generated by Autodist 1.4. Do not edit.
- Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+ Generated: Thu Sep 25 14:05:01 EEST 2008 by priikone
Distribution: Server
License:
*/
Modified: silc-server/trunk/lib/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/Makefile.am (original)
+++ silc-server/trunk/lib/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/Makefile.ad file in the source tree.
# Source: ./lib/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/Makefile.in (original)
+++ silc-server/trunk/lib/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/Makefile.ad file in the source tree.
# Source: ./lib/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:02 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/contrib/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/contrib/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/contrib/Makefile.am (original)
+++ silc-server/trunk/lib/contrib/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/contrib/Makefile.ad file in the source tree.
# Source: ./lib/contrib/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/contrib/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/contrib/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/contrib/Makefile.in (original)
+++ silc-server/trunk/lib/contrib/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/contrib/Makefile.ad file in the source tree.
# Source: ./lib/contrib/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcapputil/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcapputil/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcapputil/Makefile.am (original)
+++ silc-server/trunk/lib/silcapputil/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcapputil/Makefile.ad file in the source tree.
# Source: ./lib/silcapputil/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcapputil/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcapputil/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcapputil/Makefile.in (original)
+++ silc-server/trunk/lib/silcapputil/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcapputil/Makefile.ad file in the source tree.
# Source: ./lib/silcapputil/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcasn1/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/Makefile.am (original)
+++ silc-server/trunk/lib/silcasn1/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcasn1/Makefile.ad file in the source tree.
# Source: ./lib/silcasn1/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcasn1/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/Makefile.in (original)
+++ silc-server/trunk/lib/silcasn1/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcasn1/Makefile.ad file in the source tree.
# Source: ./lib/silcasn1/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcasn1/silcasn1.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/silcasn1.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/silcasn1.c (original)
+++ silc-server/trunk/lib/silcasn1/silcasn1.c Tue Oct 7 16:33:59 2008
@@ -53,7 +53,7 @@
asn1->stack2 = silc_stack_alloc(768);
if (!asn1->stack2) {
- silc_stack_free(asn1->stack2);
+ silc_stack_free(asn1->stack1);
return FALSE;
}
Modified: silc-server/trunk/lib/silcasn1/silcasn1_encode.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcasn1/silcasn1_encode.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcasn1/silcasn1_encode.c (original)
+++ silc-server/trunk/lib/silcasn1/silcasn1_encode.c Tue Oct 7 16:33:59 2008
@@ -351,7 +351,7 @@
/* Get OID words from the string */
cp = strchr(oidstr, '.');
while (cp) {
- if (sscanf(oidstr, "%lu", (unsigned long *)&oid) != 1) {
+ if (sscanf(oidstr, "%u", &oid) != 1) {
SILC_LOG_DEBUG(("Malformed OID string"));
goto fail;
}
@@ -362,7 +362,7 @@
cp = strchr(oidstr, '.');
if (!cp) {
- if (sscanf(oidstr, "%lu", (unsigned long *)&oid) != 1) {
+ if (sscanf(oidstr, "%u", &oid) != 1) {
SILC_LOG_DEBUG(("Malformed OID string"));
goto fail;
}
Modified: silc-server/trunk/lib/silccore/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/Makefile.am (original)
+++ silc-server/trunk/lib/silccore/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silccore/Makefile.ad file in the source tree.
# Source: ./lib/silccore/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silccore/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/Makefile.in (original)
+++ silc-server/trunk/lib/silccore/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silccore/Makefile.ad file in the source tree.
# Source: ./lib/silccore/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silccore/silcpacket.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/silcpacket.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/silcpacket.c (original)
+++ silc-server/trunk/lib/silccore/silcpacket.c Tue Oct 7 16:33:59 2008
@@ -40,7 +40,7 @@
SilcMutex lock; /* Engine lock */
SilcRng rng; /* RNG for engine */
SilcHashTable contexts; /* Per scheduler contexts */
- SilcPacketCallbacks *callbacks; /* Packet callbacks */
+ const SilcPacketCallbacks *callbacks; /* Packet callbacks */
void *callback_context; /* Context for callbacks */
SilcList streams; /* All streams in engine */
SilcList packet_pool; /* Free list for received packets */
@@ -51,7 +51,7 @@
/* Packet processor context */
typedef struct SilcPacketProcessStruct {
SilcPacketType *types; /* Packets to process */
- SilcPacketCallbacks *callbacks; /* Callbacks or NULL */
+ const SilcPacketCallbacks *callbacks; /* Callbacks or NULL */
void *callback_context;
SilcInt32 priority; /* Priority */
} *SilcPacketProcess;
@@ -81,7 +81,7 @@
unsigned char *dst_id; /* Destination ID */
SilcUInt32 send_psn; /* Sending sequence */
SilcUInt32 receive_psn; /* Receiving sequence */
- SilcAtomic8 refcnt; /* Reference counter */
+ SilcAtomic32 refcnt; /* Reference counter */
SilcUInt8 sid; /* Security ID, set if IV included */
unsigned int src_id_len : 6;
unsigned int src_id_type : 2;
@@ -540,7 +540,7 @@
SilcPacketEngine
silc_packet_engine_start(SilcRng rng, SilcBool router,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context)
{
SilcPacketEngine engine;
@@ -621,7 +621,7 @@
silc_free(engine);
}
-static const char *packet_error[] = {
+static const char * const packet_error[] = {
"Cannot read from stream",
"Cannot write to stream",
"Packet MAC failed",
@@ -695,7 +695,7 @@
return NULL;
ps->stream = stream;
- silc_atomic_init8(&ps->refcnt, 1);
+ silc_atomic_init32(&ps->refcnt, 1);
silc_mutex_alloc(&ps->lock);
/* Allocate out buffer */
@@ -816,7 +816,7 @@
return NULL;
ps->sc = stream->sc;
- silc_atomic_init8(&ps->refcnt, 1);
+ silc_atomic_init32(&ps->refcnt, 1);
silc_mutex_alloc(&ps->lock);
/* Set the UDP packet stream as underlaying stream */
@@ -884,7 +884,7 @@
if (!stream)
return;
- if (silc_atomic_sub_int8(&stream->refcnt, 1) > 0) {
+ if (silc_atomic_sub_int32(&stream->refcnt, 1) > 0) {
if (stream->destroyed)
return;
stream->destroyed = TRUE;
@@ -972,7 +972,7 @@
silc_free(stream->src_id);
silc_free(stream->dst_id);
- silc_atomic_uninit8(&stream->refcnt);
+ silc_atomic_uninit32(&stream->refcnt);
silc_mutex_free(stream->lock);
silc_free(stream);
}
@@ -1001,7 +1001,7 @@
/* Links `callbacks' to `stream' for specified packet types */
static SilcBool silc_packet_stream_link_va(SilcPacketStream stream,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context,
int priority, va_list ap)
{
@@ -1030,6 +1030,7 @@
stream->process = silc_dlist_init();
if (!stream->process) {
silc_mutex_unlock(stream->lock);
+ silc_free(p);
return FALSE;
}
}
@@ -1079,7 +1080,7 @@
/* Links `callbacks' to `stream' for specified packet types */
SilcBool silc_packet_stream_link(SilcPacketStream stream,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context,
int priority, ...)
{
@@ -1097,7 +1098,7 @@
/* Unlinks `callbacks' from `stream'. */
void silc_packet_stream_unlink(SilcPacketStream stream,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context)
{
SilcPacketProcess p;
@@ -1153,10 +1154,10 @@
void silc_packet_stream_ref(SilcPacketStream stream)
{
- silc_atomic_add_int8(&stream->refcnt, 1);
+ silc_atomic_add_int32(&stream->refcnt, 1);
SILC_LOG_DEBUG(("Stream %p, refcnt %d->%d", stream,
- silc_atomic_get_int8(&stream->refcnt) - 1,
- silc_atomic_get_int8(&stream->refcnt)));
+ silc_atomic_get_int32(&stream->refcnt) - 1,
+ silc_atomic_get_int32(&stream->refcnt)));
}
/* Unreference packet stream */
@@ -1164,11 +1165,11 @@
void silc_packet_stream_unref(SilcPacketStream stream)
{
SILC_LOG_DEBUG(("Stream %p, refcnt %d->%d", stream,
- silc_atomic_get_int8(&stream->refcnt),
- silc_atomic_get_int8(&stream->refcnt) - 1));
- if (silc_atomic_sub_int8(&stream->refcnt, 1) > 0)
+ silc_atomic_get_int32(&stream->refcnt),
+ silc_atomic_get_int32(&stream->refcnt) - 1));
+ if (silc_atomic_sub_int32(&stream->refcnt, 1) > 0)
return;
- silc_atomic_add_int8(&stream->refcnt, 1);
+ silc_atomic_add_int32(&stream->refcnt, 1);
silc_packet_stream_destroy(stream);
}
@@ -1323,6 +1324,7 @@
{
SilcUInt32 len;
unsigned char tmp[32];
+ void *tmp_id;
if (!src_id && !dst_id)
return FALSE;
@@ -1332,16 +1334,17 @@
if (src_id) {
SILC_LOG_DEBUG(("Setting source ID to packet stream %p", stream));
- silc_free(stream->src_id);
if (!silc_id_id2str(src_id, src_id_type, tmp, sizeof(tmp), &len)) {
silc_mutex_unlock(stream->lock);
return FALSE;
}
- stream->src_id = silc_memdup(tmp, len);
- if (!stream->src_id) {
+ tmp_id = silc_memdup(tmp, len);
+ if (!tmp_id) {
silc_mutex_unlock(stream->lock);
return FALSE;
}
+ silc_free(stream->src_id);
+ stream->src_id = tmp_id;
stream->src_id_type = src_id_type;
stream->src_id_len = len;
}
@@ -1349,16 +1352,17 @@
if (dst_id) {
SILC_LOG_DEBUG(("Setting destination ID to packet stream %p", stream));
- silc_free(stream->dst_id);
if (!silc_id_id2str(dst_id, dst_id_type, tmp, sizeof(tmp), &len)) {
silc_mutex_unlock(stream->lock);
return FALSE;
}
- stream->dst_id = silc_memdup(tmp, len);
- if (!stream->dst_id) {
+ tmp_id = silc_memdup(tmp, len);
+ if (!tmp_id) {
silc_mutex_unlock(stream->lock);
return FALSE;
}
+ silc_free(stream->dst_id);
+ stream->dst_id = tmp_id;
stream->dst_id_type = dst_id_type;
stream->dst_id_len = len;
}
@@ -2340,7 +2344,7 @@
void *stream_context);
/* Packet waiting callbacks */
-static SilcPacketCallbacks silc_packet_wait_cbs =
+static const SilcPacketCallbacks silc_packet_wait_cbs =
{
silc_packet_wait_packet_receive, NULL, NULL
};
@@ -2529,7 +2533,7 @@
} *SilcPacketWrapperStream;
/* Packet wrapper callbacks */
-static SilcPacketCallbacks silc_packet_wrap_cbs =
+static const SilcPacketCallbacks silc_packet_wrap_cbs =
{
silc_packet_wrap_packet_receive, NULL, NULL
};
Modified: silc-server/trunk/lib/silccore/silcpacket.h
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccore/silcpacket.h?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccore/silcpacket.h (original)
+++ silc-server/trunk/lib/silccore/silcpacket.h Tue Oct 7 16:33:59 2008
@@ -361,7 +361,7 @@
***/
SilcPacketEngine
silc_packet_engine_start(SilcRng rng, SilcBool router,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context);
/****f* silccore/SilcPacketAPI/silc_packet_engine_stop
@@ -651,7 +651,7 @@
*
***/
SilcBool silc_packet_stream_link(SilcPacketStream stream,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context,
int priority, ...);
@@ -671,7 +671,7 @@
*
***/
void silc_packet_stream_unlink(SilcPacketStream stream,
- SilcPacketCallbacks *callbacks,
+ const SilcPacketCallbacks *callbacks,
void *callback_context);
/****f* silccore/SilcPacketAPI/SilcPacketWrapCoder
Modified: silc-server/trunk/lib/silccrypt/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/Makefile.am (original)
+++ silc-server/trunk/lib/silccrypt/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silccrypt/Makefile.ad file in the source tree.
# Source: ./lib/silccrypt/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silccrypt/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silccrypt/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silccrypt/Makefile.in (original)
+++ silc-server/trunk/lib/silccrypt/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silccrypt/Makefile.ad file in the source tree.
# Source: ./lib/silccrypt/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silchttp/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silchttp/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silchttp/Makefile.am (original)
+++ silc-server/trunk/lib/silchttp/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silchttp/Makefile.ad file in the source tree.
# Source: ./lib/silchttp/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silchttp/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silchttp/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silchttp/Makefile.in (original)
+++ silc-server/trunk/lib/silchttp/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silchttp/Makefile.ad file in the source tree.
# Source: ./lib/silchttp/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:04 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcmath/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcmath/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcmath/Makefile.am (original)
+++ silc-server/trunk/lib/silcmath/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcmath/Makefile.ad file in the source tree.
# Source: ./lib/silcmath/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcmath/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcmath/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcmath/Makefile.in (original)
+++ silc-server/trunk/lib/silcmath/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcmath/Makefile.ad file in the source tree.
# Source: ./lib/silcmath/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcske/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcske/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcske/Makefile.am (original)
+++ silc-server/trunk/lib/silcske/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcske/Makefile.ad file in the source tree.
# Source: ./lib/silcske/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcske/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcske/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcske/Makefile.in (original)
+++ silc-server/trunk/lib/silcske/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcske/Makefile.ad file in the source tree.
# Source: ./lib/silcske/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcske/silcske.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcske/silcske.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcske/silcske.c (original)
+++ silc-server/trunk/lib/silcske/silcske.c Tue Oct 7 16:33:59 2008
@@ -4,7 +4,7 @@
Author: Pekka Riikonen <priikone at silcnet.org>
- Copyright (C) 2000 - 2007 Pekka Riikonen
+ Copyright (C) 2000 - 2008 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -2026,15 +2026,9 @@
silc_packet_free(ske->packet);
ske->packet = NULL;
- /* Verify the received public key and verify the signature if we are
- doing mutual authentication. */
- if (ske->start_payload &&
- ske->start_payload->flags & SILC_SKE_SP_FLAG_MUTUAL) {
-
- SILC_LOG_DEBUG(("We are doing mutual authentication"));
-
- if (!recv_payload->pk_data && (ske->callbacks->verify_key ||
- ske->repository)) {
+ /* Verify public key, except in rekey, when it is not sent */
+ if (!ske->rekey) {
+ if (!recv_payload->pk_data) {
/** Public key not provided */
SILC_LOG_ERROR(("Remote end did not send its public key (or "
"certificate), even though we require it"));
@@ -2044,8 +2038,7 @@
}
/* Decode the remote's public key */
- if (recv_payload->pk_data &&
- !silc_pkcs_public_key_alloc(recv_payload->pk_type,
+ if (!silc_pkcs_public_key_alloc(recv_payload->pk_type,
recv_payload->pk_data,
recv_payload->pk_len,
&ske->prop->public_key)) {
@@ -2056,39 +2049,36 @@
return SILC_FSM_CONTINUE;
}
- if (ske->prop->public_key && (ske->callbacks->verify_key ||
- ske->repository)) {
- SILC_LOG_DEBUG(("Verifying public key"));
-
- /** Waiting public key verification */
- silc_fsm_next(fsm, silc_ske_st_responder_phase4);
-
- /* If repository is provided, verify the key from there. */
- if (ske->repository) {
- SilcSKRFind find;
-
- find = silc_skr_find_alloc();
- if (!find) {
- ske->status = SILC_SKE_STATUS_OUT_OF_MEMORY;
- silc_fsm_next(fsm, silc_ske_st_responder_error);
- return SILC_FSM_CONTINUE;
- }
- silc_skr_find_set_pkcs_type(find,
- silc_pkcs_get_type(ske->prop->public_key));
- silc_skr_find_set_public_key(find, ske->prop->public_key);
- silc_skr_find_set_usage(find, SILC_SKR_USAGE_KEY_AGREEMENT);
-
- /* Find key from repository */
- SILC_FSM_CALL(silc_skr_find(ske->repository,
- silc_fsm_get_schedule(fsm), find,
- silc_ske_skr_callback, ske));
- } else {
- /* Verify from application */
+ SILC_LOG_DEBUG(("Verifying public key"));
+
+ /** Waiting public key verification */
+ silc_fsm_next(fsm, silc_ske_st_responder_phase4);
+
+ /* If repository is provided, verify the key from there. */
+ if (ske->repository) {
+ SilcSKRFind find;
+
+ find = silc_skr_find_alloc();
+ if (!find) {
+ ske->status = SILC_SKE_STATUS_OUT_OF_MEMORY;
+ silc_fsm_next(fsm, silc_ske_st_responder_error);
+ return SILC_FSM_CONTINUE;
+ }
+ silc_skr_find_set_pkcs_type(find,
+ silc_pkcs_get_type(ske->prop->public_key));
+ silc_skr_find_set_public_key(find, ske->prop->public_key);
+ silc_skr_find_set_usage(find, SILC_SKR_USAGE_KEY_AGREEMENT);
+
+ /* Find key from repository */
+ SILC_FSM_CALL(silc_skr_find(ske->repository,
+ silc_fsm_get_schedule(fsm), find,
+ silc_ske_skr_callback, ske));
+ } else {
+ /* Verify from application */
+ if (ske->callbacks->verify_key)
SILC_FSM_CALL(ske->callbacks->verify_key(ske, ske->prop->public_key,
ske->callbacks->context,
silc_ske_pk_verified, NULL));
- }
- /* NOT REACHED */
}
}
@@ -2129,7 +2119,7 @@
unsigned char hash[SILC_HASH_MAXLEN];
SilcUInt32 hash_len;
- SILC_LOG_DEBUG(("Public key is authentic"));
+ SILC_LOG_DEBUG(("We are doing mutual authentication"));
/* Compute the hash value */
status = silc_ske_make_hash(ske, hash, &hash_len, TRUE);
Modified: silc-server/trunk/lib/silcskr/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcskr/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcskr/Makefile.am (original)
+++ silc-server/trunk/lib/silcskr/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcskr/Makefile.ad file in the source tree.
# Source: ./lib/silcskr/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcskr/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcskr/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcskr/Makefile.in (original)
+++ silc-server/trunk/lib/silcskr/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcskr/Makefile.ad file in the source tree.
# Source: ./lib/silcskr/Makefile.ad
-# Generated: Sun Jun 22 18:32:15 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcutil/Makefile.am
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/Makefile.am?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/Makefile.am (original)
+++ silc-server/trunk/lib/silcutil/Makefile.am Tue Oct 7 16:33:59 2008
@@ -2,7 +2,7 @@
# To make changes edit the ./lib/silcutil/Makefile.ad file in the source tree.
# Source: ./lib/silcutil/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcutil/Makefile.in
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/Makefile.in?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/Makefile.in (original)
+++ silc-server/trunk/lib/silcutil/Makefile.in Tue Oct 7 16:33:59 2008
@@ -18,7 +18,7 @@
# To make changes edit the ./lib/silcutil/Makefile.ad file in the source tree.
# Source: ./lib/silcutil/Makefile.ad
-# Generated: Sun Jun 22 18:32:16 EEST 2008 by priikone
+# Generated: Thu Sep 25 14:05:03 EEST 2008 by priikone
# Distribution: Server
# License:
Modified: silc-server/trunk/lib/silcutil/silcstack.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/silcstack.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/silcstack.c (original)
+++ silc-server/trunk/lib/silcutil/silcstack.c Tue Oct 7 16:33:59 2008
@@ -4,7 +4,7 @@
Author: Pekka Riikonen <priikone at silcnet.org>
- Copyright (C) 2003 - 2006 Pekka Riikonen
+ Copyright (C) 2003 - 2008 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -65,6 +65,9 @@
void silc_stack_free(SilcStack stack)
{
int i;
+
+ if (!stack)
+ return;
silc_free(stack->frames);
for (i = 0; i < SILC_STACK_BLOCK_NUM; i++)
Modified: silc-server/trunk/lib/silcutil/silctypes.h
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/silctypes.h?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/silctypes.h (original)
+++ silc-server/trunk/lib/silcutil/silctypes.h Tue Oct 7 16:33:59 2008
@@ -177,13 +177,13 @@
*
* SOURCE
*/
+#if SILC_SIZEOF_INT == 4
+typedef unsigned int SilcUInt32;
+typedef signed int SilcInt32;
+#else
#if SILC_SIZEOF_LONG == 4
typedef unsigned long SilcUInt32;
typedef signed long SilcInt32;
-#else
-#if SILC_SIZEOF_INT == 4
-typedef unsigned int SilcUInt32;
-typedef signed int SilcInt32;
#else
#if SILC_SIZEOF_LONG_LONG >= 4
#ifndef WIN32
@@ -634,4 +634,11 @@
#endif
/***/
+typedef char __check_size1[sizeof(SilcInt8) == 1 ? 1 : -1];
+typedef char __check_size2[sizeof(SilcUInt8) == 1 ? 1 : -1];
+typedef char __check_size3[sizeof(SilcInt16) == 2 ? 1 : -1];
+typedef char __check_size4[sizeof(SilcUInt16) == 2 ? 1 : -1];
+typedef char __check_size5[sizeof(SilcInt32) == 4 ? 1 : -1];
+typedef char __check_size6[sizeof(SilcUInt32) == 4 ? 1 : -1];
+
#endif /* SILCTYPES_H */
Modified: silc-server/trunk/lib/silcutil/silcutil.c
URL: http://svn.debian.org/wsvn/pkg-silc/silc-server/trunk/lib/silcutil/silcutil.c?rev=311&op=diff
==============================================================================
--- silc-server/trunk/lib/silcutil/silcutil.c (original)
+++ silc-server/trunk/lib/silcutil/silcutil.c Tue Oct 7 16:33:59 2008
@@ -557,13 +557,18 @@
printf("%s", prompt);
fflush(stdout);
+ read_again1:
if ((read(fd, input, sizeof(input))) < 0) {
+ if (errno == EAGAIN || errno == EINTR)
+ goto read_again1;
fprintf(stderr, "silc: %s\n", strerror(errno));
+ signal(SIGINT, SIG_DFL);
tcsetattr(fd, TCSANOW, &to_old);
return NULL;
}
if (strlen(input) <= 1) {
+ signal(SIGINT, SIG_DFL);
tcsetattr(fd, TCSANOW, &to_old);
return NULL;
}
@@ -591,10 +596,18 @@
printf("%s", prompt);
fflush(stdout);
+ signal(SIGINT, SIG_IGN);
+
+ read_again2:
if ((read(fd, input, sizeof(input))) < 0) {
+ if (errno == EAGAIN || errno == EINTR)
+ goto read_again2;
fprintf(stderr, "silc: %s\n", strerror(errno));
+ signal(SIGINT, SIG_DFL);
return NULL;
}
+
+ signal(SIGINT, SIG_DFL);
if (strlen(input) <= 1)
return NULL;
More information about the Pkg-silc-commits
mailing list