Right now, the WockyJingleSession::terminated has three arguments, two of which are a member of the WockyJingleReason enum and a human-readable string.
Meanwhile, _on_initiate_reply() passes NULL as the GError parameter for wocky_porter_send_iq_finish() and wocky_stanza_extract_errors(), and ends the session with REASON_UNKNOWN if either of them fails. It would be nice if the application could (optionally) get more details about what happened.
So I suggest:
* Create a GError domain for WockyJingleReason (not sure what name the quark macro should have. WOCKY_JINGLE_REASON would work but might be confusing since WOCKY_TYPE_JINGLE_REASON also exists but WOCKY_JINGLE_REASON is not a cast macro);
* Make ::terminated include a GError *, which may be NULL;
* Make the current cases where UNKNOWN is used in place of a better error use that error, and the cases where it is used to mean "no error" use NULL for the GError *.