Fixed rekey protocol with PFS, which was broken.
[silc.git] / apps / silcd / protocol.c
index ed22ce15ef14cbc044a7745545d444457eacc8f9..65fafeeae26e53ab27c5f39f2231a9f7e39a4eaa 100644 (file)
@@ -1559,7 +1559,10 @@ SILC_TASK_CALLBACK(silc_server_protocol_rekey)
 
     /* We received the REKEY_DONE packet and all packets after this is
        encrypted with the new key so set the decryption key to the new key */
-    silc_server_protocol_rekey_generate(server, ctx, FALSE);
+    if (ctx->pfs == TRUE)
+      silc_server_protocol_rekey_generate_pfs(server, ctx, FALSE);
+    else
+      silc_server_protocol_rekey_generate(server, ctx, FALSE);
 
     /* Assure that after calling final callback there cannot be pending
        executions for this protocol anymore. This just unregisters any