From dddb5d13de15e6188b796fbba1c0b13b6942780e Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Mon, 18 Jul 2011 22:01:22 +0100
Subject: [PATCH] use a POST request for uploads to work around a gevent issue

---
 client/djrandom_client/upload.py     | 2 +-
 server/djrandom/receiver/receiver.py | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/client/djrandom_client/upload.py b/client/djrandom_client/upload.py
index 806272a..06c6a91 100644
--- a/client/djrandom_client/upload.py
+++ b/client/djrandom_client/upload.py
@@ -56,7 +56,7 @@ class Uploader(object):
                     headers={'X-Key': self.api_key,
                              'Content-Type': 'audio/mpeg',
                              'Content-Length': str(filesize)})
-                req.get_method = lambda: 'PUT'
+                req.get_method = lambda: 'POST'
                 result = json.loads(urllib2.urlopen(req).read())
                 return result['status']
             finally:
diff --git a/server/djrandom/receiver/receiver.py b/server/djrandom/receiver/receiver.py
index 376cabf..e5b55ef 100644
--- a/server/djrandom/receiver/receiver.py
+++ b/server/djrandom/receiver/receiver.py
@@ -44,7 +44,7 @@ def _upload_mp3(incoming_fd, sha1):
     log.info('successfully stored %s' % (sha1,))
 
 
-@app.route('/upload/<sha1>', methods=['PUT'])
+@app.route('/upload/<sha1>', methods=['POST'])
 def upload(sha1):
     if request.content_type != 'audio/mpeg':
         log.error('attempted upload with wrong content-type (%s)' % (
@@ -58,7 +58,10 @@ def run_receiver(port, storage_dir, db_url):
     global storage_root
     storage_root = storage_dir
     init_db(db_url)
-    app.run(host='0.0.0.0', port=port, use_reloader=False)
+
+    from gevent.wsgi import WSGIServer
+    http_server = WSGIServer(('0.0.0.0', port), app)
+    http_server.serve_forever()
 
 
 def main():
-- 
GitLab