about summary refs log tree commit diff stats
path: root/jabber.c
diff options
context:
space:
mode:
Diffstat (limited to 'jabber.c')
-rw-r--r--jabber.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/jabber.c b/jabber.c
index 37a049f7..731b1f35 100644
--- a/jabber.c
+++ b/jabber.c
@@ -183,6 +183,25 @@ void jabber_roster_request(void)
 void jabber_update_presence(jabber_presence_t status)
 {
     jabber_conn.presence = status;
+
+    xmpp_stanza_t *pres, *show;
+
+    pres = xmpp_stanza_new(jabber_conn.ctx);
+    xmpp_stanza_set_name(pres, "presence");
+    
+    if (status == PRESENCE_AWAY) {
+        show = xmpp_stanza_new(jabber_conn.ctx);
+        xmpp_stanza_set_name(show, "show");
+        xmpp_stanza_t *text = xmpp_stanza_new(jabber_conn.ctx);
+        xmpp_stanza_set_text(text, "away");
+        xmpp_stanza_add_child(show, text);
+        xmpp_stanza_add_child(pres, show);
+        xmpp_stanza_release(text);
+        xmpp_stanza_release(show);
+    }
+
+    xmpp_send(jabber_conn.conn, pres);
+    xmpp_stanza_release(pres);
 }
 
 static int _jabber_message_handler(xmpp_conn_t * const conn,