Paul Perkins - 2005-02-25

Logged In: YES
user_id=204526

This looks like the right fix, although, to be creative, I delayed the
promotion to long until after the modulus is taken:
discid = (long(checksum % 0xff) << 24 | total_time << 8 | last)

In python 2.3 you can also get warnings like:
CDDB.py:32: FutureWarning: %u/%o/%x/%X of negative int will return
a signed string in Python 2.4 and up
query_str = (('%08lx %d ') % (disc_id, num_tracks))

But with the change above, the disc_id becomes long instead of int, so,
no warning, and no problem.

In Python 2.2 and before, 32-bit unsigned numbers can be stored as
short int values. In Python 2.4 and after, 32-bit unsigned numbers with
the most significant binary digit set are automagically stored as long
int values. Python 2.3 has one foot on each side of the fence, ouch!