# HG changeset patch # User Mark Doliner # Date 1211317161 0 # Node ID ba47ec8a2477ad642ded83c645f0b35b8aa431d0 # Parent 2b91ea8c94d560b2274894cbc493b2cd68a5c367 When adding outgoing MSN commands to the MsnHistory, free MsnTransaction->payload to save memory. MSN_HIST_ELEMS * MSN_BUF_LEN (used in msn_message_gen_payload) = 48 * 8192 bytes = 384 KB per online MSN account = a lot of wasted memory diff -r 2b91ea8c94d5 -r ba47ec8a2477 libpurple/protocols/msn/cmdproc.c --- a/libpurple/protocols/msn/cmdproc.c Tue May 20 19:49:26 2008 +0000 +++ b/libpurple/protocols/msn/cmdproc.c Tue May 20 20:59:21 2008 +0000 @@ -132,6 +132,14 @@ data = g_realloc(data, len + trans->payload_len); memcpy(data + len, trans->payload, trans->payload_len); len += trans->payload_len; + + /* + * We're done with trans->payload. Free it so that the memory + * doesn't sit around in cmdproc->history. + */ + g_free(trans->payload); + trans->payload = NULL; + trans->payload_len = 0; } msn_servconn_write(servconn, data, len); diff -r 2b91ea8c94d5 -r ba47ec8a2477 libpurple/protocols/msn/msg.c --- a/libpurple/protocols/msn/msg.c Tue May 20 19:49:26 2008 +0000 +++ b/libpurple/protocols/msn/msg.c Tue May 20 20:59:21 2008 +0000 @@ -151,6 +151,7 @@ MsnMessage *msg; msg = msn_message_new(MSN_MSG_NUDGE); + /* TODO: This shouldn't have a \r\n in it, should it?? */ msn_message_set_content_type(msg, "text/x-msnmsgr-datacast\r\n"); msn_message_set_flag(msg, 'N'); msn_message_set_attr(msg,"ID","1\r\n"); diff -r 2b91ea8c94d5 -r ba47ec8a2477 libpurple/protocols/msnp9/cmdproc.c --- a/libpurple/protocols/msnp9/cmdproc.c Tue May 20 19:49:26 2008 +0000 +++ b/libpurple/protocols/msnp9/cmdproc.c Tue May 20 20:59:21 2008 +0000 @@ -132,6 +132,14 @@ data = g_realloc(data, len + trans->payload_len); memcpy(data + len, trans->payload, trans->payload_len); len += trans->payload_len; + + /* + * We're done with trans->payload. Free it so that the memory + * doesn't sit around in cmdproc->history. + */ + g_free(trans->payload); + trans->payload = NULL; + trans->payload_len = 0; } msn_servconn_write(servconn, data, len); diff -r 2b91ea8c94d5 -r ba47ec8a2477 libpurple/protocols/msnp9/msg.c --- a/libpurple/protocols/msnp9/msg.c Tue May 20 19:49:26 2008 +0000 +++ b/libpurple/protocols/msnp9/msg.c Tue May 20 20:59:21 2008 +0000 @@ -158,6 +158,7 @@ MsnMessage *msg; msg = msn_message_new(MSN_MSG_NUDGE); + /* TODO: This shouldn't have a \r\n in it, should it?? */ msn_message_set_content_type(msg, "text/x-msnmsgr-datacast\r\n"); msn_message_set_flag(msg, 'N'); msn_message_set_attr(msg,"ID","1\r\n");