From 7d59c1761940f22c97d164b8aa6f50c5974abd7d Mon Sep 17 00:00:00 2001 From: Yuming Zhu Date: Mar 16 2017 15:40:25 +0000 Subject: workaround for 64bits long int xmlrpc processing --- diff --git a/hub/kojixmlrpc.py b/hub/kojixmlrpc.py index 53cd229..f7f12dd 100644 --- a/hub/kojixmlrpc.py +++ b/hub/kojixmlrpc.py @@ -30,7 +30,7 @@ import types import pprint import resource import xmlrpclib -from xmlrpclib import getparser, dumps, Fault +from xmlrpclib import getparser, dumps, Fault, MAXINT, MININT, LongType from koji.server import WSGIWrapper import koji @@ -43,7 +43,7 @@ from koji.context import context # Workaround to allow xmlrpclib deal with iterators -class Marshaller(xmlrpclib.Marshaller): +class Marshaller(xmlrpclib.Marshaller, object): dispatch = xmlrpclib.Marshaller.dispatch.copy() @@ -61,6 +61,16 @@ class Marshaller(xmlrpclib.Marshaller): self.dump_string(value, write) dispatch[datetime.datetime] = dump_datetime + def dump_long(self, value, write): + # Workaround for >32 bits long int + if value > MAXINT or value < MININT: + write("") + write(str(int(value))) + write("\n") + else: + super(Marshaller, self).dump_long(value, write) + dispatch[LongType] = dump_long + xmlrpclib.Marshaller = Marshaller