X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient_prvmsg.c;h=ec0e3b8de39a9b8dac782d6d47b42995ba225da1;hb=d4938a564e358e8072c30290305a68cef665eaa0;hp=6c6c56ca22709c1ed5cf710779b075f8c9062f99;hpb=3df964f52d094db8ea9e8981fee73ff2a59e365c;p=silc.git diff --git a/lib/silcclient/client_prvmsg.c b/lib/silcclient/client_prvmsg.c index 6c6c56ca..ec0e3b8d 100644 --- a/lib/silcclient/client_prvmsg.c +++ b/lib/silcclient/client_prvmsg.c @@ -107,7 +107,7 @@ SILC_FSM_STATE(silc_client_private_message) 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; @@ -122,9 +122,10 @@ SILC_FSM_STATE(silc_client_private_message) /* 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); @@ -195,6 +196,7 @@ SILC_FSM_STATE(silc_client_private_message) out: /** Packet processed */ + silc_client_unref_client(client, conn, remote_client); if (payload) silc_message_payload_free(payload); silc_packet_free(packet);