Mercurial > pidgin.yaz
diff libpurple/protocols/yahoo/libymsg.c @ 28617:cd3beebb1d13
merged with im.pidgin.pidgin
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Fri, 11 Sep 2009 00:50:55 +0900 |
parents | b4cbcb427e7d 860998956a4d |
children | ce5593e0e1dc |
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/libymsg.c Fri Sep 11 00:27:01 2009 +0900 +++ b/libpurple/protocols/yahoo/libymsg.c Fri Sep 11 00:50:55 2009 +0900 @@ -220,7 +220,12 @@ if (f->status == YAHOO_STATUS_IDLE) { /* Idle may have already been set in a more precise way in case 137 */ if (f->idle == 0) - f->idle = time(NULL); + { + if(pkt->service == YAHOO_SERVICE_STATUS_15) + f->idle = -1; + else + f->idle = time(NULL); + } } else f->idle = 0; @@ -253,15 +258,20 @@ if (f->away == 2) { /* Idle may have already been set in a more precise way in case 137 */ if (f->idle == 0) - f->idle = time(NULL); + { + if(pkt->service == YAHOO_SERVICE_STATUS_15) + f->idle = -1; + else + f->idle = time(NULL); + } } break; - case 138: /* either we're not idle, or we are but won't say how long */ + case 138: /* when value is 1, either we're not idle, or we are but won't say how long */ if (!f) break; - if (f->idle) + if( (strtol(pair->value, NULL, 10) == 1) && (f->idle) ) f->idle = -1; break; case 137: /* usually idle time in seconds, sometimes login time */ @@ -4506,6 +4516,12 @@ if (purple_presence_is_idle(presence)) yahoo_packet_hash_str(pkt, 47, "2"); + else { + if (!purple_status_is_available(status)) + yahoo_packet_hash_str(pkt, 47, "1"); + else + yahoo_packet_hash_str(pkt, 47, "0"); + } yahoo_packet_send_and_free(pkt, yd);