ske->public_key = public_key;
ske->private_key = private_key;
ske->retry_timer = SILC_SKE_RETRY_MIN;
+ ske->refcnt = 1;
return ske;
}
return;
}
+ ske->refcnt--;
+ if (ske->refcnt > 0)
+ return;
+
/* Free start payload */
if (ske->start_payload)
silc_ske_payload_start_free(ske->start_payload);
silc_skr_find_set_usage(find, SILC_SKR_USAGE_KEY_AGREEMENT);
/* Find key from repository */
- SILC_FSM_CALL(silc_skr_find(ske->repository, find,
- silc_ske_skr_callback, ske));
+ SILC_FSM_CALL(silc_skr_find(ske->repository, silc_fsm_get_schedule(fsm),
+ find, silc_ske_skr_callback, ske));
} else {
/* Verify from application */
SILC_FSM_CALL(ske->callbacks->verify_key(ske, ske->prop->public_key,
silc_skr_find_set_usage(find, SILC_SKR_USAGE_KEY_AGREEMENT);
/* Find key from repository */
- SILC_FSM_CALL(silc_skr_find(ske->repository, find,
+ SILC_FSM_CALL(silc_skr_find(ske->repository,
+ silc_fsm_get_schedule(fsm), find,
silc_ske_skr_callback, ske));
} else {
/* Verify from application */