aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyserver/ChangeLog7
-rw-r--r--keyserver/gpgkeys_ldap.c19
2 files changed, 18 insertions, 8 deletions
diff --git a/keyserver/ChangeLog b/keyserver/ChangeLog
index c0f8eb388..4d6522a21 100644
--- a/keyserver/ChangeLog
+++ b/keyserver/ChangeLog
@@ -1,3 +1,10 @@
+2004-02-25 David Shaw <[email protected]>
+
+ * gpgkeys_ldap.c (send_key): List pgpCertID as one of the deleted
+ attributes. This guarantees that if something goes wrong, we
+ won't be able to complete the transaction, thus leaving any key
+ already existing on the server intact.
+
2004-02-23 David Shaw <[email protected]>
* gpgkeys_ldap.c (delete_one_attr): Removed.
diff --git a/keyserver/gpgkeys_ldap.c b/keyserver/gpgkeys_ldap.c
index af82498d2..42003b483 100644
--- a/keyserver/gpgkeys_ldap.c
+++ b/keyserver/gpgkeys_ldap.c
@@ -541,6 +541,9 @@ send_key(int *eof)
make_one_attr(&modlist,0,"pgpSubKeyID",NULL);
make_one_attr(&modlist,0,"pgpKeySize",NULL);
make_one_attr(&modlist,0,"pgpKeyExpireTime",NULL);
+ make_one_attr(&modlist,0,"pgpCertID",NULL);
+ /* Note the count of these deleted attributes. They're to be used
+ later. */
/* Assemble the INFO stuff into LDAP attributes */
@@ -672,13 +675,13 @@ send_key(int *eof)
err=ldap_modify_s(ldap,dn,modlist);
if(err==LDAP_NO_SUCH_OBJECT)
{
- LDAPMod **addlist=&modlist[10];
+ /* This [11] is the deleted count from earlier */
+ LDAPMod **addlist=&modlist[11];
err=ldap_add_s(ldap,dn,addlist);
}
if(err!=LDAP_SUCCESS)
{
- printf("err %d\n",err);
fprintf(console,"gpgkeys: error adding key %s to keyserver: %s\n",
keyid,ldap_err2string(err));
ret=ldap_err_to_gpg_err(err);
@@ -712,12 +715,12 @@ send_key_keyserver(int *eof)
char keyid[17];
LDAPMod mod, *attrs[2];
- memset (&mod, 0, sizeof mod);
- mod.mod_op = LDAP_MOD_ADD;
- mod.mod_type = pgpkeystr;
- mod.mod_values = key;
- attrs[0] = &mod;
- attrs[1] = NULL;
+ memset(&mod,0,sizeof(mod));
+ mod.mod_op=LDAP_MOD_ADD;
+ mod.mod_type=pgpkeystr;
+ mod.mod_values=key;
+ attrs[0]=&mod;
+ attrs[1]=NULL;
dn=malloc(strlen("pgpCertid=virtual,")+strlen(basekeyspacedn)+1);
if(dn==NULL)