Mercurial > pidgin.yaz
diff libpurple/protocols/oscar/family_oservice.c @ 29324:da49e136fb34
Move two logging statements from oscar.c to family_oservice.c so we
can stop passing a billion parameters around.
2 files changed, 22 insertions(+), 61 deletions(-)
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 02 Feb 2010 23:18:09 +0000 |
parents | d7cc8dbf91f0 |
children | 6b0c4667c4fb |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/family_oservice.c Tue Feb 02 23:11:35 2010 +0000 +++ b/libpurple/protocols/oscar/family_oservice.c Tue Feb 02 23:18:09 2010 +0000 @@ -333,7 +333,6 @@ rateclass->disconnect = byte_stream_get32(bs); rateclass->current = byte_stream_get32(bs); rateclass->max = byte_stream_get32(bs); - if (mod->version >= 3) { delta = byte_stream_get32(bs); rateclass->dropping_snacs = byte_stream_get8(bs); @@ -341,6 +340,7 @@ delta = 0; rateclass->dropping_snacs = 0; } + rateclass->last.tv_sec = now.tv_sec - delta / 1000; delta %= 1000; rateclass->last.tv_usec = now.tv_usec - delta * 1000; @@ -448,12 +448,17 @@ static int ratechange(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs) { - int ret = 0; - aim_rxcallback_t userfunc; guint16 code, classid; struct rateclass *rateclass; guint32 delta; struct timeval now; + static const char *codes[5] = { + "invalid", + "change", + "warning", + "limit", + "limit cleared", + }; gettimeofday(&now, NULL); code = byte_stream_get16(bs); @@ -471,7 +476,6 @@ rateclass->disconnect = byte_stream_get32(bs); rateclass->current = byte_stream_get32(bs); rateclass->max = byte_stream_get32(bs); - if (mod->version >= 3) { delta = byte_stream_get32(bs); rateclass->dropping_snacs = byte_stream_get8(bs); @@ -479,17 +483,26 @@ delta = 0; rateclass->dropping_snacs = 0; } + rateclass->last.tv_sec = now.tv_sec - delta / 1000; delta %= 1000; rateclass->last.tv_usec = now.tv_usec - delta * 1000; - if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) { - /* Can't pass in guint8 via ... varargs, so we use an unsigned int */ - unsigned int dropping_snacs = rateclass->dropping_snacs; - ret = userfunc(od, conn, frame, code, classid, rateclass->windowsize, rateclass->clear, rateclass->alert, rateclass->limit, rateclass->disconnect, rateclass->current, rateclass->max, delta, dropping_snacs); + purple_debug_misc("oscar", "rate %s (param ID 0x%04hx): curavg = %u, " + "maxavg = %u, alert at %u, clear warning at %u, limit at %u, " + "disconnect at %u, delta is %u, dropping is %u (window size = %u)\n", + (code < 5) ? codes[code] : codes[0], rateclass->classid, + rateclass->current, rateclass->max, rateclass->alert, + rateclass->clear, rateclass->limit, rateclass->disconnect, + delta, rateclass->dropping_snacs, rateclass->windowsize); + + if (code == AIM_RATE_CODE_LIMIT) { + purple_debug_warning("oscar", _("The last action you attempted " + "could not be performed because you are over the rate " + "limit. Please wait 10 seconds and try again.\n")); } - return ret; + return 1; } /*