+2001-06-21 Mitchell Berger <mitchb@mit.edu>
+
+ * server_kdb.c (kdb_put_entry): Modified to perform the generation
+ number update conditional upon success of kdb_put_entry_internal.
+ (kdb_put_entry_internal): No longer takes incgen argument or updates
+ generation number.
+ (kdb_update_generation_number): Changed from using
+ krb5_dbe_update_generation_number_general to using
+ krb5_dbe_increment_generation_number_general. Also uses new calling
+ sequence for kdb_put_entry_internal.
+
2001-06-20 Mitchell Berger <mitchb@mit.edu>
* Makefile.in: Include svr_generation.[co] in the build.
kdb_put_entry(kadm5_server_handle_t handle,
krb5_db_entry *kdb, osa_princ_ent_rec *adb)
{
- return kdb_put_entry_internal(handle, kdb, adb, 1, 1);
+ krb5_error_code ret;
+
+ ret = kdb_put_entry_internal(handle, kdb, adb, 1);
+ if (ret)
+ return(ret);
+
+ /* The update succeeded, so we should update the generation number. */
+ ret = kdb_update_generation_number(handle);
+ if (ret)
+ return(ret);
+
+ return(0);
}
krb5_error_code
kdb_put_entry_internal(kadm5_server_handle_t handle,
- krb5_db_entry *kdb, osa_princ_ent_rec *adb, int incgen,
+ krb5_db_entry *kdb, osa_princ_ent_rec *adb,
int updatemod)
{
krb5_error_code ret;
if (ret)
return(ret);
- if (incgen) {
- /* The update succeeded, so we should change the generation number */
- ret = kdb_update_generation_number(handle);
- if (ret)
- return(ret);
- }
-
return(0);
}
if (ret)
return(ret);
- ret = krb5_dbe_update_generation_number_general(handle->context,
- &master_kdb, NULL);
+ ret = krb5_dbe_increment_generation_number_general(handle->context,
+ &master_kdb);
if (ret)
return(ret);
/* Updating the generation number, while a change to the database,
is not one that should result in updating the generation number
- again to avoid an infinite loop. */
- ret = kdb_put_entry_internal(handle, &master_kdb, &master_adb, 0, 0);
+ again to avoid an infinite loop. Also, though it is changing
+ data associated with the master principal, we don't want to update
+ the master principal's modprinc data because that would be misleading. */
+ ret = kdb_put_entry_internal(handle, &master_kdb, &master_adb, 0);
if (ret)
return(ret);