From ac351894b014c3ac49916f5893ad85b5be488074 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 22 2015 12:03:44 +0000 Subject: [PATCH 1/3] Retrieve the complete http request made to the server But we still only want the first line to act upon --- diff --git a/ev-server/pagure-stream-server.py b/ev-server/pagure-stream-server.py index 811fcc0..2112ba4 100644 --- a/ev-server/pagure-stream-server.py +++ b/ev-server/pagure-stream-server.py @@ -95,10 +95,17 @@ def get_obj_from_path(path): @trollius.coroutine def handle_client(client_reader, client_writer): - # give client a chance to respond, timeout after 10 seconds - data = yield trollius.From(trollius.wait_for( - client_reader.readline(), - timeout=10.0)) + data = None + while True: + # give client a chance to respond, timeout after 10 seconds + line = yield trollius.From(trollius.wait_for( + client_reader.readline(), + timeout=10.0)) + if not line.decode().strip(): + break + line = line.decode().rstrip() + if data is None: + data = line if data is None: log.warning("Expected ticket uid, received None") From 73460984f60fa174703a3eb79c1f97b042a6a7e6 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 22 2015 12:06:12 +0000 Subject: [PATCH 2/3] Use the APP_URL variable to set the Access-Control-Allow-Origin header --- diff --git a/ev-server/pagure-stream-server.py b/ev-server/pagure-stream-server.py index 2112ba4..9d3c15a 100644 --- a/ev-server/pagure-stream-server.py +++ b/ev-server/pagure-stream-server.py @@ -123,12 +123,16 @@ def handle_client(client_reader, client_writer): url = urlparse.urlsplit(data[1]) + origin = pagure.APP.config.get('APP_URL') + if origin.endswith('/'): + origin = origin[:-1] + client_writer.write(( "HTTP/1.0 200 OK\n" "Content-Type: text/event-stream\n" "Cache: nocache\n" "Connection: keep-alive\n" - "Access-Control-Allow-Origin: *\n\n" + "Access-Control-Allow-Origin: %s\n\n" % origin ).encode()) try: From 3d30843f748bf01bf3764ae3cf54a8ac41c9dab9 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 22 2015 12:06:48 +0000 Subject: [PATCH 3/3] Move up the call to get_obj_from_path as it may still raise an exception --- diff --git a/ev-server/pagure-stream-server.py b/ev-server/pagure-stream-server.py index 9d3c15a..266af55 100644 --- a/ev-server/pagure-stream-server.py +++ b/ev-server/pagure-stream-server.py @@ -123,6 +123,12 @@ def handle_client(client_reader, client_writer): url = urlparse.urlsplit(data[1]) + try: + obj = get_obj_from_path(url.path) + except PagureEvException as err: + log.warning(err.message) + return + origin = pagure.APP.config.get('APP_URL') if origin.endswith('/'): origin = origin[:-1] @@ -136,12 +142,6 @@ def handle_client(client_reader, client_writer): ).encode()) try: - obj = get_obj_from_path(url.path) - except PagureEvException as err: - log.warning(err.message) - return - - try: connection = yield trollius.From(trollius_redis.Connection.create( host=pagure.APP.config['REDIS_HOST'], port=pagure.APP.config['REDIS_PORT'],