equal
deleted
inserted
replaced
46 |
46 |
47 char imstatus2char[imstatus_size+1] = { |
47 char imstatus2char[imstatus_size+1] = { |
48 '_', 'o', 'f', 'd', 'n', 'a', 'i', '\0' |
48 '_', 'o', 'f', 'd', 'n', 'a', 'i', '\0' |
49 }; |
49 }; |
50 |
50 |
|
51 static char *imstatus_showmap[] = { |
|
52 "", |
|
53 "", |
|
54 "chat", |
|
55 "dnd", |
|
56 "xa", |
|
57 "away", |
|
58 "" |
|
59 }; |
|
60 |
51 static time_t LastPingTime; |
61 static time_t LastPingTime; |
52 static unsigned int KeepaliveDelay; |
62 static unsigned int KeepaliveDelay; |
53 static enum imstatus mystatus = offline; |
63 static enum imstatus mystatus = offline; |
54 static enum imstatus mywantedstatus = available; |
64 static enum imstatus mywantedstatus = available; |
55 static gchar *mystatusmsg; |
65 static gchar *mystatusmsg; |
399 xmlnode_put_attrib(x, "to", recipient); |
409 xmlnode_put_attrib(x, "to", recipient); |
400 } |
410 } |
401 |
411 |
402 switch(st) { |
412 switch(st) { |
403 case away: |
413 case away: |
404 xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "away", |
414 case notavail: |
405 (unsigned) -1); |
|
406 break; |
|
407 |
|
408 case dontdisturb: |
415 case dontdisturb: |
409 xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "dnd", |
|
410 (unsigned) -1); |
|
411 break; |
|
412 |
|
413 case freeforchat: |
416 case freeforchat: |
414 xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "chat", |
417 xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), |
415 (unsigned) -1); |
418 imstatus_showmap[st], (unsigned) -1); |
416 break; |
|
417 |
|
418 case notavail: |
|
419 xmlnode_insert_cdata(xmlnode_insert_tag(x, "show"), "xa", |
|
420 (unsigned) -1); |
|
421 break; |
419 break; |
422 |
420 |
423 case invisible: |
421 case invisible: |
424 xmlnode_put_attrib(x, "type", "invisible"); |
422 xmlnode_put_attrib(x, "type", "invisible"); |
425 break; |
423 break; |
686 #ifdef JEP0085 |
684 #ifdef JEP0085 |
687 /* JEP-0085 5.1 |
685 /* JEP-0085 5.1 |
688 * "Until receiving a reply to the initial content message (or a standalone |
686 * "Until receiving a reply to the initial content message (or a standalone |
689 * notification) from the Contact, the User MUST NOT send subsequent chat |
687 * notification) from the Contact, the User MUST NOT send subsequent chat |
690 * state notifications to the Contact." |
688 * state notifications to the Contact." |
691 * In our implementation support is initially "unknown", they it's "probed" |
689 * In our implementation support is initially "unknown", then it's "probed" |
692 * and can become "ok". |
690 * and can become "ok". |
693 */ |
691 */ |
694 if (jep85 && (jep85->support == CHATSTATES_SUPPORT_OK || |
692 if (jep85 && (jep85->support == CHATSTATES_SUPPORT_OK || |
695 jep85->support == CHATSTATES_SUPPORT_UNKNOWN)) { |
693 jep85->support == CHATSTATES_SUPPORT_UNKNOWN)) { |
696 event = xmlnode_insert_tag(x, "active"); |
694 event = xmlnode_insert_tag(x, "active"); |