SilcPacket packet = state_context;
SilcMessagePayload payload = NULL;
SilcClientID remote_id;
- SilcClientEntry remote_client;
+ SilcClientEntry remote_client = NULL;
SilcMessageFlags flags;
unsigned char *message;
SilcUInt32 message_len;
/* Check whether we know this client already */
remote_client = silc_client_get_client_by_id(client, conn, &remote_id);
- if (!remote_client || !remote_client->nickname) {
+ if (!remote_client || !remote_client->nickname[0]) {
/* Resolve the client info. We return back to packet thread to receive
other packets while we wait for the resolving to finish. */
+ silc_client_unref_client(client, conn, remote_client);
silc_client_get_client_by_id_resolve(client, conn, &remote_id, NULL,
silc_client_private_message_resolved,
packet);
out:
/** Packet processed */
+ silc_client_unref_client(client, conn, remote_client);
if (payload)
silc_message_payload_free(payload);
silc_packet_free(packet);