From 448924e2c65313aa9899ce1db473c893c1e1e2f0 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Aug 25 2017 20:48:02 +0000 Subject: Patch xmlrpclib for 64-bit integers Related: https://pagure.io/koji/issue/464 --- diff --git a/hub/kojixmlrpc.py b/hub/kojixmlrpc.py index a799ad5..2a77980 100644 --- a/hub/kojixmlrpc.py +++ b/hub/kojixmlrpc.py @@ -60,6 +60,24 @@ class Marshaller(xmlrpclib.Marshaller): self.dump_string(value, write) dispatch[datetime.datetime] = dump_datetime + MAXI8 = 2 ** 64 - 1 + MINI8 = -2 ** 64 + def dump_i8(self, value, write): + # python2's xmlrpclib doesn't support i8 extension for marshalling, + # but can unmarshall it correctly. + if value > Marshaller.MAXI8 or value < Marshaller.MINI8: + raise OverflowError, "long int exceeds XML-RPC limits" + elif value > xmlrpclib.MAXINT or value < xmlrpclib.MININT: + write("") + write(str(int(value))) + write("\n") + else: + write("") + write(str(int(value))) + write("\n") + dispatch[types.LongType] = dump_i8 + dispatch[types.IntType] = dump_i8 + xmlrpclib.Marshaller = Marshaller