If the machine data (by default taken from os.uname() contains a colon (:) in one of its fields, then queries based on that machine fail. This happens with my prototype Cygwin patchbot, where on Cygwin the uname's version field contains a datetime of when that version of Cygwin was built, and hence contains a colon.
The patchbot server, when passed a machine in a URL query string, separates each of the machine info fields with a colon. Thus, splitting the machine data on colons fails given that one of the fields contains a colon.
I would propose an alternative URL syntax that does not rely on magic separators. For example, Flask supports "arrays" in query strings using duplicate fields like machine=foo&machine=bar&... and then use req.args.getlist('machine'). If it returns a single element it's an old-style argument and should be split on : (for backward compat). However if there are more than one element then treat this as the full machine info.
If the machine data (by default taken from
os.uname()
contains a colon (:
) in one of its fields, then queries based on that machine fail. This happens with my prototype Cygwin patchbot, where on Cygwin the uname's version field contains a datetime of when that version of Cygwin was built, and hence contains a colon.The patchbot server, when passed a machine in a URL query string, separates each of the machine info fields with a colon. Thus, splitting the machine data on colons fails given that one of the fields contains a colon.
I would propose an alternative URL syntax that does not rely on magic separators. For example, Flask supports "arrays" in query strings using duplicate fields like
machine=foo&machine=bar&...
and then usereq.args.getlist('machine')
. If it returns a single element it's an old-style argument and should be split on:
(for backward compat). However if there are more than one element then treat this as the full machine info.