X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FDBHelper.c;h=40d3be3506e34f4673f08270bd1e422aae2456bc;hp=787b336845451821833f9303eba792ae1b87ac18;hb=c8e7ce1c57afaebf3996a6712c45f4c89c34ba44;hpb=e77f75ad6cda0f1856710d685895284d694ef70d diff --git a/src/DBHelper.c b/src/DBHelper.c index 787b336..40d3be3 100644 --- a/src/DBHelper.c +++ b/src/DBHelper.c @@ -262,28 +262,35 @@ int renameAccount(char *oldauth, char *newauth) { static AUTHLOOKUP_CALLBACK(event_user_registered_auth_lookup); struct event_user_registered_cache { - struct UserNode *new_user; + struct UserNode *user; char *oldauth; }; -static int event_user_registered(struct UserNode *old_user, struct UserNode *new_user) { +static void event_user_registered(struct UserNode *user, char *new_mask) { //check if there is a fakehost on both sides... - if(!isFakeHost(old_user->host) || !isFakeHost(new_user->host)) return 0; + //extract host from new_mask + char *new_host = strchr(new_mask, '@'); + if(new_host) + new_host++; + else + return; + if(!isFakeHost(user->host) || !isFakeHost(new_host)) + return; //extract user names char oldauth[AUTHLEN], newauth[AUTHLEN]; char *p; - if((p = strstr(old_user->host, "."))) { + if((p = strstr(user->host, "."))) { *p = '\0'; - strcpy(oldauth, old_user->host); + strcpy(oldauth, user->host); *p = '.'; } - if((p = strstr(new_user->host, "."))) { + if((p = strstr(new_host, "."))) { *p = '\0'; - strcpy(newauth, new_user->host); + strcpy(newauth, new_host); *p = '.'; } if(!stricmp(oldauth, newauth)) - return 0; + return; //check if we know this user; then check the new auth MYSQL_RES *res; MYSQL_ROW row; @@ -293,21 +300,21 @@ static int event_user_registered(struct UserNode *old_user, struct UserNode *new struct event_user_registered_cache *cache = malloc(sizeof(*cache)); if (!cache) { perror("malloc() failed"); - return 1; + return; } - cache->new_user = new_user; + cache->user = user; cache->oldauth = strdup(oldauth); lookup_authname(newauth, 0, event_user_registered_auth_lookup, cache); } - return 1; + return; } static AUTHLOOKUP_CALLBACK(event_user_registered_auth_lookup) { struct event_user_registered_cache *cache = data; if(exists) { renameAccount(cache->oldauth, auth); - strcpy(cache->new_user->auth, auth); - cache->new_user->flags |= USERFLAG_ISAUTHED; + strcpy(cache->user->auth, auth); + cache->user->flags |= USERFLAG_ISAUTHED; } free(cache->oldauth); free(cache);