projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
updates.
[silc.git]
/
lib
/
silcclient
/
client.c
diff --git
a/lib/silcclient/client.c
b/lib/silcclient/client.c
index becb0829d527ae34de7537aa173961e4375c699e..7b0f1ca70531de22b38d2b7add43fda0508c9b6e 100644
(file)
--- a/
lib/silcclient/client.c
+++ b/
lib/silcclient/client.c
@@
-1479,16
+1479,28
@@
SILC_TASK_CALLBACK(silc_client_disconnected_by_server_later)
void silc_client_disconnected_by_server(SilcClient client,
SilcSocketConnection sock,
void silc_client_disconnected_by_server(SilcClient client,
SilcSocketConnection sock,
- SilcBuffer
message
)
+ SilcBuffer
packet
)
{
{
- char *msg;
+ SilcStatus status;
+ char *message = NULL;
SILC_LOG_DEBUG(("Server disconnected us, sock %d", sock->sock));
SILC_LOG_DEBUG(("Server disconnected us, sock %d", sock->sock));
- msg = silc_memdup(message->data, message->len);
+ if (packet->len < 1)
+ return;
+
+ status = (SilcStatus)packet->data[0];
+
+ if (packet->len > 1 &&
+ silc_utf8_valid(packet->data + 1, packet->len - 1))
+ message = silc_memdup(packet->data, packet->len);
+
client->internal->ops->say(client, sock->user_data,
client->internal->ops->say(client, sock->user_data,
- SILC_CLIENT_MESSAGE_AUDIT, msg);
- silc_free(msg);
+ SILC_CLIENT_MESSAGE_AUDIT,
+ "Server closed connection: %s (%d) %s",
+ silc_get_status_message(status), status,
+ message ? message : "");
+ silc_free(message);
SILC_SET_DISCONNECTED(sock);
SILC_SET_DISCONNECTED(sock);