diff --git a/src/core/inf.c b/src/core/inf.c index e68513e..c477af0 100644 --- a/src/core/inf.c +++ b/src/core/inf.c @@ -378,7 +378,7 @@ static int check_user_agent(struct hub_info* hub, struct hub_user* user, struct ua = adc_msg_unescape(ua_encoded); if (ua) { - memcpy(user->user_agent, ua, MIN(strlen(ua), MAX_UA_LEN)); + memcpy(user->id.user_agent, ua, MIN(strlen(ua), MAX_UA_LEN)); hub_free(ua); } } diff --git a/src/core/plugininvoke.c b/src/core/plugininvoke.c index 683c572..9915634 100644 --- a/src/core/plugininvoke.c +++ b/src/core/plugininvoke.c @@ -74,14 +74,18 @@ #define PLUGIN_INVOKE_3(HUB, FUNCNAME, ARG1, ARG2, ARG3) INVOKE(HUB, FUNCNAME, { plugin->funcs.FUNCNAME(plugin, ARG1, ARG2, ARG3); }) -static void convert_user_type(struct plugin_user* puser, struct hub_user* user) +static struct plugin_user* convert_user_type(struct hub_user* user) { + struct plugin_user* puser = (struct plugin_user*) user; + return puser; +#if 0 puser->sid = user->id.sid; puser->nick = user->id.nick; puser->cid = user->id.cid; puser->user_agent = user->user_agent; puser->addr = user->id.addr; puser->credentials = user->credentials; +#endif } plugin_st plugin_check_ip_early(struct hub_info* hub, struct ip_addr_encap* addr) @@ -106,85 +110,71 @@ void plugin_log_connection_denied(struct hub_info* hub, struct ip_addr_encap* ip void plugin_log_user_login_success(struct hub_info* hub, struct hub_user* who) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_1(hub, on_user_login, &user); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_1(hub, on_user_login, user); } void plugin_log_user_login_error(struct hub_info* hub, struct hub_user* who, const char* reason) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_2(hub, on_user_login_error, &user, reason); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_2(hub, on_user_login_error, user, reason); } void plugin_log_user_logout(struct hub_info* hub, struct hub_user* who, const char* reason) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_2(hub, on_user_logout, &user, reason); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_2(hub, on_user_logout, user, reason); } void plugin_log_user_nick_change(struct hub_info* hub, struct hub_user* who, const char* new_nick) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_2(hub, on_user_nick_change, &user, new_nick); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_2(hub, on_user_nick_change, user, new_nick); } void plugin_log_user_update_error(struct hub_info* hub, struct hub_user* who, const char* reason) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_2(hub, on_user_update_error, &user, reason); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_2(hub, on_user_update_error, user, reason); } void plugin_log_chat_message(struct hub_info* hub, struct hub_user* who, const char* message, int flags) { - struct plugin_user user; - convert_user_type(&user, who); - PLUGIN_INVOKE_3(hub, on_user_chat_message, &user, message, flags); + struct plugin_user* user = convert_user_type(who); + PLUGIN_INVOKE_3(hub, on_user_chat_message, user, message, flags); } plugin_st plugin_handle_chat_message(struct hub_info* hub, struct hub_user* from, const char* message, int flags) { - struct plugin_user user; - convert_user_type(&user, from); - PLUGIN_INVOKE_STATUS_2(hub, on_chat_msg, &user, message); + struct plugin_user* user = convert_user_type(from); + PLUGIN_INVOKE_STATUS_2(hub, on_chat_msg, user, message); } plugin_st plugin_handle_private_message(struct hub_info* hub, struct hub_user* from, struct hub_user* to, const char* message, int flags) { - struct plugin_user user1; - struct plugin_user user2; - convert_user_type(&user1, from); - convert_user_type(&user2, to); - PLUGIN_INVOKE_STATUS_3(hub, on_private_msg, &user1, &user2, message); + struct plugin_user* user1 = convert_user_type(from); + struct plugin_user* user2 = convert_user_type(to); + PLUGIN_INVOKE_STATUS_3(hub, on_private_msg, user1, user2, message); } plugin_st plugin_handle_search(struct hub_info* hub, struct hub_user* from, const char* data) { - struct plugin_user user; - convert_user_type(&user, from); - PLUGIN_INVOKE_STATUS_2(hub, on_search, &user, data); + struct plugin_user* user = convert_user_type(from); + PLUGIN_INVOKE_STATUS_2(hub, on_search, user, data); } plugin_st plugin_handle_connect(struct hub_info* hub, struct hub_user* from, struct hub_user* to) { - struct plugin_user user1; - struct plugin_user user2; - convert_user_type(&user1, from); - convert_user_type(&user2, to); - PLUGIN_INVOKE_STATUS_2(hub, on_p2p_connect, &user1, &user2); + struct plugin_user* user1 = convert_user_type(from); + struct plugin_user* user2 = convert_user_type(to); + PLUGIN_INVOKE_STATUS_2(hub, on_p2p_connect, user1, user2); } plugin_st plugin_handle_revconnect(struct hub_info* hub, struct hub_user* from, struct hub_user* to) { - struct plugin_user user1; - struct plugin_user user2; - convert_user_type(&user1, from); - convert_user_type(&user2, to); - PLUGIN_INVOKE_STATUS_2(hub, on_p2p_revconnect, &user1, &user2); + struct plugin_user* user1 = convert_user_type(from); + struct plugin_user* user2 = convert_user_type(to); + PLUGIN_INVOKE_STATUS_2(hub, on_p2p_revconnect, user1, user2); } plugin_st plugin_auth_get_user(struct hub_info* hub, const char* nickname, struct auth_info* info) diff --git a/src/core/user.h b/src/core/user.h index 00894a8..96d399c 100644 --- a/src/core/user.h +++ b/src/core/user.h @@ -82,8 +82,9 @@ extern const char* user_get_quit_reason_string(enum user_quit_reason); struct hub_user_info { sid_t sid; /** session ID */ - char cid[MAX_CID_LEN+1]; /** global client ID */ char nick[MAX_NICK_LEN+1]; /** User's nick name */ + char cid[MAX_CID_LEN+1]; /** global client ID */ + char user_agent[MAX_UA_LEN+1];/** User agent string */ struct ip_addr_encap addr; /** User's IP address */ }; @@ -105,11 +106,10 @@ struct hub_user_limits struct hub_user { - enum user_state state; /** see enum user_state */ - enum auth_credentials credentials; /** see enum user_credentials */ struct hub_user_info id; /** Contains nick name and CID */ + enum auth_credentials credentials; /** see enum user_credentials */ + enum user_state state; /** see enum user_state */ uint32_t flags; /** see enum user_features */ - char user_agent[MAX_UA_LEN+1];/** User agent string */ struct linked_list* feature_cast; /** Features supported by feature cast */ struct adc_message* info; /** ADC 'INF' message (broadcasted to everyone joining the hub) */ struct hub_info* hub; /** The hub instance this user belong to */