# HG changeset patch # User Luke Schierer # Date 1192814320 0 # Node ID 66b73b0def79554368e2517cfc4f65b3386d93ab # Parent 311000f10bb00cdfdb907bb9e8aa375ca269ed18 This asked me to do a 3way merge in vim. Someone should check it. applied changes from 614efd22968bb59c279872f991d97f3053ded4f0 through cbefbdeb71c4fe12f131d0932abeaf81bea091cb diff -r 311000f10bb0 -r 66b73b0def79 libpurple/protocols/msn/command.c --- a/libpurple/protocols/msn/command.c Fri Oct 19 17:11:34 2007 +0000 +++ b/libpurple/protocols/msn/command.c Fri Oct 19 17:18:40 2007 +0000 @@ -36,6 +36,52 @@ return TRUE; } +/* + * check the command is the command with payload content + * if it is return TRUE + * else return FALSE + */ +static gboolean +msn_check_payload_cmd(const char *str) +{ + g_return_val_if_fail(str != NULL, FALSE); + if( (!strcmp(str,"ADL")) || + (!strcmp(str,"GCF")) || + (!strcmp(str,"SG")) || + (!strcmp(str,"MSG")) || + (!strcmp(str,"RML")) || + (!strcmp(str,"UBX")) || + (!strcmp(str,"UBN")) || + (!strcmp(str,"UUM")) || + (!strcmp(str,"UBM")) || + (!strcmp(str,"FQY")) || + (!strcmp(str,"UUN")) || + (!strcmp(str,"UUX")) || + (is_num(str))){ + return TRUE; + } + + return FALSE; +} + +/* + * set command Payload length + */ +static void +msn_set_payload_len(MsnCommand *cmd) +{ + char *param; + int len = 0; + + if (msn_check_payload_cmd(cmd->command) && (cmd->param_count > 0)){ + param = cmd->params[cmd->param_count - 1]; + len = is_num(param) ? atoi(param) : 0; + } + + cmd->payload_len = len; +} + + MsnCommand * msn_command_from_string(const char *string) { @@ -70,7 +116,13 @@ cmd->trId = is_num(param) ? atoi(param) : 0; } else + { cmd->trId = 0; + } + + /*add payload Length checking*/ + msn_set_payload_len(cmd); + purple_debug_info("MSNP14","get payload len:%d\n",cmd->payload_len); msn_command_ref(cmd);