안녕하세요.
지금 브라우저에 입력받은 값을 LDAP에 Modify하는 부분을
작성중에 있거든요.
근데 한번은 update가 잘 이루어지는데, 똑같은 데이타로
다시 한번 update하면 맨 마지막 (18번째 attribute)에 update되어
지는 attribute 값이 failed: duplicate value라는 에러메세지가
떨어지는군요.
modify하는 소스 부분에 문제가 있는지 확인좀 부탁드릴께요.
// 브라우저로 부터 data가 입력받음
LDAP *ld;
LDAPMod mod0, mod1, mod2, mod3, mod4, mod5, mod6, mod7,
mod8, mod9, mod10, mod11, mod12, mod13,
mod14, mod15, mod16, mod17, mod18, *mods[ 19 ];
if ( (ld = ldap_init( MY_HOST, MY_PORT )) == NULL ) {
*ret = 0;
return S_OK;
}
if ( ldap_simple_bind_s( ld, MGR_DN, MGR_PW ) != LDAP_SUCCESS ) {
*ret = -1 ;
return S_OK;
}
mod0.mod_op = LDAP_MOD_REPLACE;
mod0.mod_type = "cn";
vals[0] = utf_cn;
vals[1] = NULL;
mod0.mod_values = vals;
mod1.mod_op = LDAP_MOD_REPLACE;
mod1.mod_type = "mail";
vals[0] = in_mail;
vals[1] = NULL;
mod1.mod_values = vals;
mod2.mod_op = LDAP_MOD_REPLACE;
mod2.mod_type = "isInternalUser";
vals[0] = in_isInternalUser;
vals[1] = NULL;
mod2.mod_values = vals;
mod3.mod_op = LDAP_MOD_REPLACE;
mod3.mod_type = "currentState";
vals[0] = in_currentState;
vals[1] = NULL;
mod3.mod_values = vals;
.
.
.
.
mod18.mod_op = LDAP_MOD_REPLACE;
mod18.mod_type = "registeredDate";
vals[0] = in_registeredDate;
vals[1] = NULL;
mod18.mod_values = vals;
mods[0] = &mod0;
mods[1] = &mod1;
mods[2] = &mod2;
mods[3] = &mod3;
mods[4] = &mod4;
.
.
.
mods[18] = &mod18;
mods[19] = NULL;
if ( ldap_modify_s( ld, dn, mods ) != LDAP_SUCCESS ) {
*ret = -3;
return S_OK;
}
|