view doc/jabber-signals.dox @ 32796:5ae7e1f36b43

Fix a possible XMPP remote crash A series of specially crafted file transfer requests can cause clients to reference invalid memory. The user must have accepted one of the file transfer requests. The fix is to correctly cancel and free a SOCKS5 connection attempt so that it does not trigger an attempt to access invalid memory later. This was reported to us by Jos«± Valent«żn Guti«±rrez and this patch is written by Paul Aurich.
author Mark Doliner <mark@kingant.net>
date Mon, 07 May 2012 03:16:31 +0000
parents 3a52cc5eb30a
children
line wrap: on
line source

/** @page jabber-signals Jabber Signals

 @signals
  @signal jabber-receiving-iq
  @signal jabber-receiving-message
  @signal jabber-receiving-presence
  @signal jabber-watched-iq
  @signal jabber-register-namespace-watcher
  @signal jabber-unregister-namespace-watcher
  @signal jabber-sending-xmlnode
  @signal jabber-receiving-xmlnode
 @endsignals

 <hr>

 @signaldef jabber-receiving-iq
  @signalproto
gboolean (*iq_received)(PurpleConnection *gc, const char *type, const char *id,
                     const char *from, xmlnode *iq);
  @endsignalproto
  @signaldesc
   Emitted when an XMPP IQ stanza is received. Allows a plugin to process IQ
   stanzas.
  @param gc        The connection on which the stanza is received
  @param type      The IQ type ('get', 'set', 'result', or 'error')
  @param id        The ID attribute from the stanza. MUST NOT be NULL.
  @param from      The originator of the stanza. MAY BE NULL if the stanza
                   originated from the user's server.
  @param iq        The full stanza received.
  @return TRUE if the plugin processed this stanza and *nobody else* should
          process it. FALSE otherwise.
 @endsignaldef

 @signaldef jabber-receiving-message
  @signalproto
gboolean (*message_received)(PurpleConnection *gc, const char *type,
                              const char *id, const char *from, const char *to,
                              xmlnode *message);
  @endsignalproto
  @signaldesc
   Emitted when an XMPP message stanza is received. Allows a plugin to
   process message stanzas.
  @param gc        The connection on which the stanza is received
  @param type      The message type (see rfc3921 or rfc3921bis)
  @param id        The ID attribute from the stanza. MAY BE NULL.
  @param from      The originator of the stanza. MAY BE NULL if the stanza
                   originated from the user's server.
  @param to        The destination of the stanza. This is probably either the
                   full JID of the receiver or the receiver's bare JID.
  @param message   The full stanza received.
  @return TRUE if the plugin processed this stanza and *nobody else* should
          process it. FALSE otherwise.
 @endsignaldef

 @signaldef jabber-receiving-presence
  @signalproto
gboolean (*presence_received)(PurpleConnection *gc, const char *type,
                               const char *from, xmlnode *presence);
  @endsignalproto
  @signaldesc
   Emitted when an XMPP presence stanza is received. Allows a plugin to process
   presence stanzas.
  @param gc        The connection on which the stanza is received
  @param type      The presence type (see rfc3921 or rfc3921bis). NULL indicates
                   this is an "available" (i.e. online) presence.
  @param from      The originator of the stanza. MAY BE NULL if the stanza
                   originated from the user's server.
  @param presence  The full stanza received.
  @return TRUE if the plugin processed this stanza and *nobody else* should
          process it. FALSE otherwise.
 @endsignaldef

 @signaldef jabber-watched-iq
  @signalproto
gboolean (*watched_iq)(PurpleConnection *gc, const char *type, const char *id,
                       const char *from, xmlnode *child);
  @endsignalproto
  @signaldesc
   Emitted when an IQ with a watched (child, namespace) pair is received.  See
   jabber-register-namespace-watcher and jabber-unregister-namespace-watcher.
  @param gc        The connection on which the stanza is received
  @param type      The IQ type ('get', 'set', 'result', or 'error')
  @param id        The ID attribute from the stanza. MUST NOT be NULL.
  @param from      The originator of the stanza. MAY BE NULL if the stanza
                   originated from the user's server.
  @param child     The child node with namespace.
  @return TRUE if the plugin processed this stanza and *nobody else* should
          process it. FALSE otherwise.
 @endsignaldef

 @signaldef jabber-register-namespace-watcher
  @signalproto
void (register_namespace_watcher)(const char *node, const char *namespace);
  @endsignalproto
  @signaldesc
   Emit this signal to register your desire to have specific IQ stanzas to be
   emitted via the jabber-watched-iq signal when received.
  @param node      The IQ child name to longer watch.
  @param namespace The IQ child namespace to longer watch.
 @endsignaldef

 @signaldef jabber-unregister-namespace-watcher
  @signalproto
void (unregister_namespace_watcher)(const char *node, const char *namespace);
  @endsignalproto
  @signaldesc
   Emit this signal to unregister your desire to have specific IQ stanzas to be
   emitted via the jabber-watched-iq signal when received.
  @param node      The IQ child name to no longer watch.
  @param namespace The IQ child namespace to no longer watch.
 @endsignaldef

 @signaldef jabber-sending-xmlnode
  @signalproto
void (sending_xmlnode)(PurpleConnection *gc, xmlnode **stanza);
  @endsignalproto
  @signaldesc
   Emit this signal (@c purple_signal_emit) to send a stanza. It is preferred
   to use this instead of prpl_info->send_raw.
   @param gc      The connection on which to send the stanza.
   @param stanza  The stanza to send. If stanza is not NULL after being sent,
                  the emitter should free it.
 @endsignaldef

 @signaldef jabber-receiving-xmlnode
  @signalproto
void (receiving_xmlnode)(PurpleConnection *gc, xmlnode **stanza);
  @endsignalproto
  @signaldesc
   Emitted when an XMPP stanza is received. Allows a plugin to process any
   stanza.
   @param gc     The connection on which the stanza was received.
   @param stanza The received stanza. Set stanza to NULL (and free it) to
                 stop processing the stanza.
 @endsignaldef

*/
// vim: syntax=c.doxygen tw=75 et