source: protocols/purple/bpurple.h @ f8c9347

Last change on this file since f8c9347 was ea90275, checked in by dequis <dx@…>, at 2016-11-13T20:10:17Z

purple: fix file transfer memory management

This means cancelling transfers on logout to avoid crashes, keeping
track of timeouts, reffing and unreffing the xfers, listening to the
callbacks from UI and purple more carefully and using the correct
functions to free the correct things at the correct moments.

Originally intended to fix a crash triggered when the dcc stall timeout
kicks in after the account is offline, which is apparently very frequent
with telegram (it sends file transfers while fetching history, and
randomly disconnects a while later).

Trying to fix that meant opening a can of worms, but after three days of
work on this bug I'm pretty sure I've finished dealing with the
resulting mess and tested all the typical edge cases.

  • Property mode set to 100644
File size: 317 bytes
Line 
1#ifndef BPURPLE_H
2# define BPURPLE_H
3
4#include <purple.h>
5#include <glib.h>
6
7#define PURPLE_REQUEST_HANDLE "purple_request"
8
9struct purple_data
10{
11    PurpleAccount *account;
12
13    GHashTable *input_requests;
14    guint next_request_id;
15    char *chat_list_server;
16    GSList *filetransfers;
17};
18
19#endif /* !BPURPLE_H */
Note: See TracBrowser for help on using the repository browser.