X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient.c;h=7b0f1ca70531de22b38d2b7add43fda0508c9b6e;hb=db5be1005b40b416681909cd557ba79ac6935203;hp=becb0829d527ae34de7537aa173961e4375c699e;hpb=febd9934299458d950f311026695ca315933c717;p=silc.git diff --git a/lib/silcclient/client.c b/lib/silcclient/client.c index becb0829..7b0f1ca7 100644 --- 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, - SilcBuffer message) + SilcBuffer packet) { - char *msg; + SilcStatus status; + char *message = NULL; 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, - 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);