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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11281
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /** @page xfer-signals File Transfer Signals
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 @signals
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 @signal file-recv-accept
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 @signal file-recv-start
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 @signal file-recv-cancel
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 @signal file-send-accept
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 @signal file-send-start
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 @signal file-send-cancel
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 @signal file-send-complete
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 @endsignals
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 <hr>
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 @signaldef file-recv-accept
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 Emitted when an incoming file transfer has been accepted.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 @signaldef file-recv-start
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 Emitted when an incoming file transfer has been started.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 @signaldef file-recv-cancel
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 Emitted when an incoming file transfer has been canceled.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 @signaldef file-recv-complete
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 Emitted when an incoming file transfer has been completed.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
1414e0e01dc5 More renaming.
Richard Laager <rlaager@wiktel.com>
parents: 16183
diff changeset
67 purple_xfer_request_accepted(). To auto-reject, set the status of the
1414e0e01dc5 More renaming.
Richard Laager <rlaager@wiktel.com>
parents: 16183
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 @signaldef file-send-accept
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 Emitted when an outgoing file transfer has been accepted.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 @signaldef file-send-start
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 Emitted when an outgoing file transfer has started.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 @signaldef file-send-cancel
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 Emitted when an outgoing file transfer has been canceled.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 @signaldef file-send-complete
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 @endsignalproto
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 @signaldesc
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 Emitted when an outgoing file transfer has been completed.
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 @param xfer The file transfer
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 @param data User data
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 @endsignaldef
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112
920a37a4c1be [gaim-migrate @ 13478]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
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