sagemath / sage-patchbot

Sage Patchbot
https://www.sagemath.org
Other
8 stars 17 forks source link

Machines with ':' in their name are not handled correctly #109

Closed embray closed 7 years ago

embray commented 7 years ago

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.