|
|
@@ -85,15 +85,20 @@ module.exports = CompileController =
|
|
|
url = "#{compilerUrl}#{url}"
|
|
|
logger.log url: url, "proxying to CLSI"
|
|
|
oneMinute = 60 * 1000
|
|
|
- # pass through If-* and Range headers for byte serving pdfs
|
|
|
- # do not send any others, potential proxying loop if Host: is passed!
|
|
|
+ # the base request
|
|
|
+ options = { url: url, method: req.method, timeout: oneMinute }
|
|
|
+ # if we have a build parameter, pass it through to the clsi
|
|
|
+ if req.query?.build?
|
|
|
+ options.qs = {}
|
|
|
+ options.qs.build = req.query.build
|
|
|
+ # if we are byte serving pdfs, pass through If-* and Range headers
|
|
|
+ # do not send any others, there's a proxying loop if Host: is passed!
|
|
|
if req.query?.pdfng
|
|
|
newHeaders = {}
|
|
|
for h, v of req.headers
|
|
|
newHeaders[h] = req.headers[h] if h.match /^(If-|Range)/i
|
|
|
- proxy = request(url: url, method: req.method, timeout: oneMinute, headers: newHeaders)
|
|
|
- else
|
|
|
- proxy = request(url: url, method: req.method, timeout: oneMinute)
|
|
|
+ options.headers = newHeaders
|
|
|
+ proxy = request(options)
|
|
|
proxy.pipe(res)
|
|
|
proxy.on "error", (error) ->
|
|
|
logger.warn err: error, url: url, "CLSI proxy error"
|