Mercurial > pidgin.yaz
annotate doc/xfer-signals.dox @ 31518:b39b6d0008c5
upnp: Asynch-ronize the callbacks from UPnP to calling code. Refs #12387
I have no idea if this will resolve the crashes, but with the help of the
packet capture, I /think/ these are correct.
Short summary: it's possible for the callback to fire (and ar be freed) before
the top-level function (purple_upnp_cancel_port_mapping) returns, even though
cancel_port_mapping returns the now-invalid ar (which may lead to a subsequent
use-after-free).
At least one call path through the code that I think leads to this (backed
up by one of the debug logs I looked at):
purple_upnp_cancel_port_mapping(...)
do_port_mapping_cb (has_control_mapping == TRUE, ar->add == FALSE)
purple_upnp_generate_action_message_and_send(..., done_port_mapping_cb, ar)
/* We fail to parse the URL (see some debug logs) */
done_port_mapping_cb
ar->cb(FALSE, cbdata)
return;
return;
return;
return ar;
...and something which calls:
do_port_mapping_cb(has_control_mapping == TRUE, ar->add == TRUE)
ar->cb(FALSE, cbdata)
g_free(ar)
return;
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Tue, 28 Dec 2010 05:37:20 +0000 |
parents | e0613cf8c493 |
children |
rev | line source |
---|---|
11281 | 1 /** @page xfer-signals File Transfer Signals |
2 | |
3 @signals | |
4 @signal file-recv-accept | |
5 @signal file-recv-start | |
6 @signal file-recv-cancel | |
7 @signal file-recv-complete | |
13219
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
8 @signal file-recv-request |
11281 | 9 @signal file-send-accept |
10 @signal file-send-start | |
11 @signal file-send-cancel | |
12 @signal file-send-complete | |
13 @endsignals | |
14 | |
20807
e0613cf8c493
Add some links from signal documentation back to the documentation for the
Will Thompson <will.thompson@collabora.co.uk>
parents:
16196
diff
changeset
|
15 @see ft.h |
e0613cf8c493
Add some links from signal documentation back to the documentation for the
Will Thompson <will.thompson@collabora.co.uk>
parents:
16196
diff
changeset
|
16 |
11281 | 17 <hr> |
18 | |
19 @signaldef file-recv-accept | |
20 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
21 void (*file_recv_accept)(PurpleXfer *xfer, gpointer data); |
11281 | 22 @endsignalproto |
23 @signaldesc | |
24 Emitted when an incoming file transfer has been accepted. | |
25 @param xfer The file transfer | |
26 @param data User data | |
27 @endsignaldef | |
28 | |
29 @signaldef file-recv-start | |
30 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
31 void (*file_recv_start)(PurpleXfer *xfer, gpointer data); |
11281 | 32 @endsignalproto |
33 @signaldesc | |
34 Emitted when an incoming file transfer has been started. | |
35 @param xfer The file transfer | |
36 @param data User data | |
37 @endsignaldef | |
38 | |
39 @signaldef file-recv-cancel | |
40 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
41 void (*file_recv_cancel)(PurpleXfer *xfer, gpointer data); |
11281 | 42 @endsignalproto |
43 @signaldesc | |
44 Emitted when an incoming file transfer has been canceled. | |
45 @param xfer The file transfer | |
46 @param data User data | |
47 @endsignaldef | |
48 | |
49 @signaldef file-recv-complete | |
50 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
51 void (*file_recv_complete)(PurpleXfer *xfer, gpointer data); |
11281 | 52 @endsignalproto |
53 @signaldesc | |
54 Emitted when an incoming file transfer has been completed. | |
55 @param xfer The file transfer | |
56 @param data User data | |
57 @endsignaldef | |
58 | |
13219
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
59 @signaldef file-recv-request |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
60 @signalproto |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
61 void (*file_recv_request)(PurpleXfer *xfer, gpointer data); |
13219
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
62 @endsignalproto |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
63 @signaldesc |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
64 Emitted before the user is prompted for an incoming file-transfer. |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
65 Plugins can intercept the signal to auto-accept/auto-reject the |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
66 requests. To auto-accept the file transfer, use |
16196 | 67 purple_xfer_request_accepted(). To auto-reject, set the status of the |
68 xfer to PURPLE_XFER_STATUS_CANCEL_LOCAL. | |
13219
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
69 @param xfer The file transfer |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
70 @param data User data |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
71 @endsignaldef |
d0f7f698b6de
[gaim-migrate @ 15583]
Richard Laager <rlaager@wiktel.com>
parents:
11281
diff
changeset
|
72 |
11281 | 73 @signaldef file-send-accept |
74 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
75 void (*file_send_accept)(PurpleXfer *xfer, gpointer data); |
11281 | 76 @endsignalproto |
77 @signaldesc | |
78 Emitted when an outgoing file transfer has been accepted. | |
79 @param xfer The file transfer | |
80 @param data User data | |
81 @endsignaldef | |
82 | |
83 @signaldef file-send-start | |
84 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
85 void (*file_send_start)(PurpleXfer *xfer, gpointer data); |
11281 | 86 @endsignalproto |
87 @signaldesc | |
88 Emitted when an outgoing file transfer has started. | |
89 @param xfer The file transfer | |
90 @param data User data | |
91 @endsignaldef | |
92 | |
93 @signaldef file-send-cancel | |
94 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
95 void (*file_send_cancel)(PurpleXfer *xfer, gpointer data); |
11281 | 96 @endsignalproto |
97 @signaldesc | |
98 Emitted when an outgoing file transfer has been canceled. | |
99 @param xfer The file transfer | |
100 @param data User data | |
101 @endsignaldef | |
102 | |
103 @signaldef file-send-complete | |
104 @signalproto | |
16183
8cf53d7a0887
Update the Doxygen signals documentation to match the new struct names.
Richard Laager <rlaager@wiktel.com>
parents:
13219
diff
changeset
|
105 void (*file_send_complete)(PurpleXfer *xfer, gpointer data); |
11281 | 106 @endsignalproto |
107 @signaldesc | |
108 Emitted when an outgoing file transfer has been completed. | |
109 @param xfer The file transfer | |
110 @param data User data | |
111 @endsignaldef | |
112 | |
113 */ | |
20807
e0613cf8c493
Add some links from signal documentation back to the documentation for the
Will Thompson <will.thompson@collabora.co.uk>
parents:
16196
diff
changeset
|
114 // vim: syntax=c.doxygen tw=75 et |