uWSGI 2.0.27__tar.gz → 2.0.28__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uwsgi-2.0.27 → uwsgi-2.0.28}/.github/workflows/test.yml +2 -1
- {uwsgi-2.0.27 → uwsgi-2.0.28}/PKG-INFO +1 -1
- uwsgi-2.0.28/buildconf/integration-tests.ini +4 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/master_utils.c +0 -6
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/signal.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/uwsgi.c +10 -2
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/uwsgiplugin.py +13 -8
- uwsgi-2.0.28/t/cgi/hello.cgi +6 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/php/config.ini +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/manage_script_name/manage_script_name_test.ini +0 -4
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/manage_script_name/useless_app.py +1 -1
- uwsgi-2.0.28/t/rack/app.ru +9 -0
- uwsgi-2.0.28/t/runner +258 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/static/config.ini +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgi.gemspec +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgiconfig.py +1 -1
- uwsgi-2.0.27/buildconf/integration-tests.ini +0 -4
- uwsgi-2.0.27/t/python/manage_script_name/test_manage_script_name.py +0 -59
- uwsgi-2.0.27/t/runner +0 -144
- {uwsgi-2.0.27 → uwsgi-2.0.28}/.github/workflows/compile-test.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/.gitignore +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/CONTRIBUTORS +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/INSTALL +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/LICENSE +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/Makefile +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/apache2/mod_Ruwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/apache2/mod_proxy_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/apache2/mod_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/attach.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/bin/uwsgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/all.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/asyncio.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/base.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/cgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/core.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/coroae.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/coverity.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/default.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/django.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/embedded.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/erlang.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/gccgo.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/gevent.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/glusterfs.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/gridfs.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/jwsgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/lib.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/lua.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/luap.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/minimal.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/modular.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/mono.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/nolang.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/package.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/php.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/plonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/ppa.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/psgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pyerl.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pylua.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pyonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pypy.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pypyonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pyring.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pyuwsgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/pyuwsginossl.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/rack.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/rados.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/rbonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/ring.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/ruby2.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/servlet.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/travis.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/unbit.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/unbitstaff.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/unittest.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/uwsgi.it.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/buildconf/v8.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/Uwsgi.pm +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/binder.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/centos_init_script +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/cgi_python.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/cryptologger.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/emperormon.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/fdconf.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/graphite_uwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/loadapp.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/pypy/uwsgi_pypy_greenlets.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/pyuwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/runuwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/securesubscribe.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/spoolqueue/producer.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/spoolqueue/tasks.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/spoolqueue/tasksconsumer.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/subscribe.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/twuwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/upstart/emperor.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/upstart/uwsgi.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/upython +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/urack.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi-cache-monitor.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi.erl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi_client.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgi_dynamic_client.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/uwsgisubscribers.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/contrib/xinetd_uwsgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/alarm.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/async.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/buffer.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/chunked.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/clang_fake.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/clock.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/config.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/cookie.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/cron.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/daemons.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/emperor.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/errors.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/event.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/exceptions.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/fifo.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/fsmon.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/gateway.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/hash.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/hooks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/ini.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/init.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/io.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/json.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/legion.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/lock.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/logging. +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/logging.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/loop.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/master.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/master_checks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/master_events.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/metrics.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/mount.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/mule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/notify.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/offload.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/plugins.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/plugins_builder.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/progress.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/protocol.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/querystring.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/queue.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/rb_timers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/reader.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/regexp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/routing.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/rpc.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/sendfile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/setup_utils.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/sharedarea.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/skel.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/snmp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/socket.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/spooler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/ssl.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/static.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/stats.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/storage.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/strings.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/subscription.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/timebomb.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/transformations.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/utils.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/websockets.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/writer.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/xmlconf.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/yaml.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/zeus.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/core/zlib.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/bootstrap.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/bootstrap2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/bootstrap3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/bootstrap4.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/bootstrap5.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config17.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config2.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config2.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/config30.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/corostream.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/debug.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/fibers.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/fibers.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/flaskpost.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/heavytest.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/heavytest.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/info_uwsgi.php +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/logic.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/mega.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/mjpeg_stream.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/mojoapp.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/multi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/multi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/multiapp.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/protected.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/router.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/simple_app.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/simple_app_wsgi2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/simple_logger.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/sites.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/sputnik.ws +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/staticfilesnmp.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/taskqueue.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgirouter.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgirouter2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgirouter3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgirouter4.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgirouter5.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/uwsgistatus.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/welcome.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/welcome.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/welcome3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/werkzeug.js +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/werkzeug.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/werkzeug_strict.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/xmlindex-html.xsl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/xmlindex.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/examples/zmqgevent.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/ext/uwsgi/extconf.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/install.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/lib/linux_ns.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/lib/netlink.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/lib/sun_fixes.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/logo_uWSGI.png +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/logo_uWSGI.svg +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/mongrel2-uwsgi.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/airbrake/airbrake_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/airbrake/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_curl/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_speech/alarm_speech.m +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_speech/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_xmpp/gloox.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/asyncio/asyncio.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/asyncio/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cache/cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/carbon/carbon.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/carbon/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cgi/cgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/clock_monotonic/clock_monotonic.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/clock_realtime/clock_realtime.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/clock_realtime/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/corerouter/corerouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/corerouter/cr.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/corerouter/cr_common.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/corerouter/cr_map.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/corerouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/coroae/coroae.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/coroae/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cplusplus/base.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cplusplus/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/cplusplus/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/curl_cron/curl_cron.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/curl_cron/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/dumbloop/dumb.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/dumbloop/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/dummy/dummy.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/dummy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/echo/echo_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/echo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_amqp/amqp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_amqp/emperor_amqp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_pg/emperor_pg.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_pg/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/example/example_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/example/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/exception_log/exception_log.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/exception_log/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/fastrouter/fastrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/fastrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/fiber/fiber.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/fiber/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/forkptyrouter/forkptyrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gccgo/gccgo_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gccgo/uwsgi.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gccgo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/geoip/geoip.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/geoip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gevent/gevent.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gevent/gevent.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gevent/hooks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gevent/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/glusterfs/glusterfs.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/glusterfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/graylog2/graylog2_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/graylog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/greenlet/greenlet.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/greenlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gridfs/gridfs.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gridfs/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/gridfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/https.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/keepalive.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/spdy3.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/spdy3.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jvm/jvm.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jvm/jvm_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jvm/uwsgi.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jvm/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jwsgi/jwsgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/jwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ldap/ldap.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ldap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/libffi/libffi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/libffi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/libtcc/libtcc.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/libtcc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logcrypto/logcrypto.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logcrypto/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logfile/logfile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logfile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logpipe/logpipe.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logpipe/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logsocket/logsocket_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logsocket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logzmq/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/logzmq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/lua/lua_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/lua/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/matheval/math.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/matheval/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongodblog/mongodblog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongodblog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongrel2/mongrel2.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mongrel2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mono/mono_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mono/uwsgi.cs +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/mono/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/msgpack/msgpack.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/msgpack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/nagios/nagios.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/nagios/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/notfound/notfound.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/notfound/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/objc_gc/objc_gc.m +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/objc_gc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pam/pam.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pam/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/php/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/php/php_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/php/session.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/php/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ping/ping_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ping/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/psgi.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/psgi_loader.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/psgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/psgi_response.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/uwsgi_plmodule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/psgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pty/pty.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pty/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pypy/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pypy/pypy_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pypy/pypy_setup.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pypy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/gil.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/profiler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/pump_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/pyloader.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/python_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/pyutils.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/raw.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/symimporter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/tracebacker.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/uwsgi_pymodule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/uwsgi_python.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/web3_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/wsgi_handlers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/wsgi_headers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/python/wsgi_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pyuwsgi/pyuwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rack/rack_api.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rack/rack_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rack/uwsgi_rack.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rados/rados.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rados/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rawrouter/rawrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rawrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rbthreads/rbthreads.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rbthreads/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/redislog/redislog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/redislog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ring/ring_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ring/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_access/router_access.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_access/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_basicauth/router_basicauth.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_basicauth/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_cache/router_cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_expires/expires.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_expires/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_hash/router_hash.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_hash/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_http/router_http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_memcached/router_memcached.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_memcached/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_metrics/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_metrics/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_radius/radius.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_radius/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_redirect/router_redirect.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_redirect/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_redis/router_redis.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_redis/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_rewrite/router_rewrite.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_rewrite/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_spnego/router_spnego.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_spnego/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_static/router_static.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_static/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_uwsgi/router_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_xmldir/router_xmldir.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/router_xmldir/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rpc/rpc_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rpc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rrdtool/rrdtool.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rrdtool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rsyslog/rsyslog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/rsyslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ruby19/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/servlet/servlet_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/servlet/uwsgi_servlet.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/servlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/signal/signal_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/signal/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/spooler/spooler_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/spooler/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/sqlite3/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/sqlite3/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ssi/ssi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ssi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/sslrouter/sslrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/sslrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stackless/stackless.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stackless/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_file/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_socket/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_statsd/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/symcall/symcall_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/symcall/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/syslog/syslog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/syslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/systemd_logger/systemd_logger.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/systemd_logger/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tornado/tornado.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tornado/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_chunked/chunked.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_gzip/gzip.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_offload/offload.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_offload/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_template/tt.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_template/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_tofile/tofile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_toupper/toupper.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tuntap/common.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tuntap/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tuntap/firewall.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tuntap/tuntap.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/tuntap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ugreen/ugreen.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/ugreen/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/v8_commonjs.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/v8_jsgi.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/v8_uwsgi.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/v8/v8_uwsgi.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/webdav/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/webdav/webdav.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/xattr/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/xattr/xattr.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/xslt/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/xslt/xslt.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/zabbix/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/zabbix/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/zergpool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/plugins/zergpool/zergpool.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/BUILD +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/base.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/fastcgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/puwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/scgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/proto/uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/setup.cpyext.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/setup.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/setup.pyuwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/cachebitmap.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/cachebitmap.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/cachetest.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/clojure/myapp.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/core/apps/read_body_and_send.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/core/read_body_and_send.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/core/url_sanitize.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/go/cachetest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/go/complextest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/go/uploadtest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/java/rpc.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/lua/basic.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/mono/cache.aspx +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/mules/mulebrain.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/mules/reload.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/mules/signal_management.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/active_workers_signal.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/apps/input_with_offset.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_benchmark.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_harakiri.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_hello.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_input_with_offset.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_post.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_sleepy.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/perl/test_streaming.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/pypy/config.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/pypy/t_continulet1.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/pypy/t_continulet2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/forcecl.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/helloapp.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_decorator_test.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_handlers.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/python/testba.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/README.md +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/config.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/project.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/body.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/routing/auth.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/routing/errorlimiter.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/routing/limiter.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/sharedarea/bigranges.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/sharedarea/bigranges.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/sharedarea/sharedarea_incdec.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/sharedarea/sharedarea_incdec.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/spooler/read.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/spooler/reload.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/spooler/spooldir/.gitignore +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/webdav/carddav.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/xslt/cd.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/xslt/cd.xml.xslt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/t/xslt/routex.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/Responder.pm +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/__init__.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/badthread.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/badwrites.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/cpubound_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/cpubound_green.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/cpubound_stackless.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/main.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/master-nothreads.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/master-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/master-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/nomaster-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/nomaster-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/deadlocks/sitecustomize.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/decoratortest.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/fileserve_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/gevent_spool.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/gh-deadlocks.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/gh-python.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/gh-rack.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/gh-shared.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/grunter.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/harakiri.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/iobound_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/iobound_async_unix.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/iobound_green.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/logger.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/mako_ugreen.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/mulefunc.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/multiapp.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/myadmin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/pgbound_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/picazzo.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/psycogreen_green.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/psycopg2_green.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/pump.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/queue.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/refcount.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/rpc.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/rpc.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/runningthread.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sendchunked.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sharedarea.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sig.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/signals.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sigwait.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sleeping_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sleeping_green.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/sleepthreadasync.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/slow.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/spoolme.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/static/test.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/static/test2.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/staticfile.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/streamer.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/t/static.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/templates/queue.html +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testapp.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testfilewrapper.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testgevent.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testpy3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testrpc.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testsignals.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testworkers.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/testyieldnone.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/threads.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/threads_atexit.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/threads_heavy.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/travis.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/ugevent.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/web3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_chat.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_chat.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_chat_async.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_chat_asyncio.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_echo.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_echo.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_echo.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/websockets_echo.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/tests/werkzeug_app.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/unittest/Makefile +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/unittest/check_core.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/unittest/check_regexp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgi.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgi_main.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgidecorators.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/uwsgidsl.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/valgrind/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/valgrind/valgrind-generate-sups.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vassals/broodlord.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vassals/cc.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vassals/multi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/flask001/app1.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/flask002/app2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/flask003/app3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/flask004/app4.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/flask005/app5.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.28}/vhosttest/nginx.conf +0 -0
@@ -30,7 +30,8 @@ jobs:
|
|
30
30
|
sudo apt install --no-install-recommends -qqyf \
|
31
31
|
libpcre2-dev libjansson-dev libcap2-dev \
|
32
32
|
php-dev libphp-embed libargon2-dev libsodium-dev \
|
33
|
-
pypy3
|
33
|
+
pypy3 default-jdk-headless libperl-dev \
|
34
|
+
ruby-dev ruby-rack
|
34
35
|
- uses: actions/checkout@v4
|
35
36
|
- name: Set env
|
36
37
|
run: echo "PROFILE=integration-tests" >> $GITHUB_ENV
|
@@ -54,12 +54,6 @@ void uwsgi_destroy_processes() {
|
|
54
54
|
|
55
55
|
uwsgi_detach_daemons();
|
56
56
|
|
57
|
-
for (i = 1; i <= uwsgi.numproc; i++) {
|
58
|
-
if (uwsgi.workers[i].pid > 0) {
|
59
|
-
waitpid(uwsgi.workers[i].pid, &waitpid_status, 0);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
57
|
for (i = 0; i < ushared->gateways_cnt; i++) {
|
64
58
|
if (ushared->gateways[i].pid > 0) {
|
65
59
|
kill(ushared->gateways[i].pid, SIGKILL);
|
@@ -495,7 +495,7 @@ void uwsgi_receive_signal(int fd, char *name, int id) {
|
|
495
495
|
|
496
496
|
destroy:
|
497
497
|
// better to kill the whole worker...
|
498
|
-
uwsgi_log_verbose("uWSGI %s %d
|
498
|
+
uwsgi_log_verbose("uWSGI %s %d error: the master disconnected from this worker. Shutting down the worker.\n", name, id);
|
499
499
|
end_me(0);
|
500
500
|
|
501
501
|
}
|
@@ -208,7 +208,7 @@ static struct uwsgi_option uwsgi_base_options[] = {
|
|
208
208
|
{"procname-master", required_argument, 0, "set master process name", uwsgi_opt_set_str, &uwsgi.procname_master, UWSGI_OPT_PROCNAME},
|
209
209
|
|
210
210
|
{"single-interpreter", no_argument, 'i', "do not use multiple interpreters (where available)", uwsgi_opt_true, &uwsgi.single_interpreter, 0},
|
211
|
-
{"need-app",
|
211
|
+
{"need-app", optional_argument, 0, "exit if no app can be loaded", uwsgi_opt_true, &uwsgi.need_app, 0},
|
212
212
|
{"master", no_argument, 'M', "enable master process", uwsgi_opt_true, &uwsgi.master_process, 0},
|
213
213
|
{"honour-stdin", no_argument, 0, "do not remap stdin to /dev/null", uwsgi_opt_true, &uwsgi.honour_stdin, 0},
|
214
214
|
{"emperor", required_argument, 0, "run the Emperor", uwsgi_opt_add_string_list, &uwsgi.emperor, 0},
|
@@ -1319,6 +1319,8 @@ void kill_them_all(int signum) {
|
|
1319
1319
|
// gracefully destroy
|
1320
1320
|
void gracefully_kill_them_all(int signum) {
|
1321
1321
|
|
1322
|
+
int waitpid_status;
|
1323
|
+
|
1322
1324
|
if (uwsgi_instance_is_dying) return;
|
1323
1325
|
uwsgi.status.gracefully_destroying = 1;
|
1324
1326
|
|
@@ -1341,6 +1343,12 @@ void gracefully_kill_them_all(int signum) {
|
|
1341
1343
|
}
|
1342
1344
|
}
|
1343
1345
|
|
1346
|
+
for (i = 1; i <= uwsgi.numproc; i++) {
|
1347
|
+
if (uwsgi.workers[i].pid > 0) {
|
1348
|
+
waitpid(uwsgi.workers[i].pid, &waitpid_status, 0);
|
1349
|
+
}
|
1350
|
+
}
|
1351
|
+
|
1344
1352
|
uwsgi_destroy_processes();
|
1345
1353
|
}
|
1346
1354
|
|
@@ -1442,7 +1450,7 @@ void reap_them_all(int signum) {
|
|
1442
1450
|
|
1443
1451
|
void harakiri() {
|
1444
1452
|
|
1445
|
-
uwsgi_log("\
|
1453
|
+
uwsgi_log("\nKilling the current process (pid: %d app_id: %d)...\n", uwsgi.mypid, uwsgi.wsgi_req->app_id);
|
1446
1454
|
|
1447
1455
|
if (!uwsgi.master_process) {
|
1448
1456
|
uwsgi_log("*** if you want your workers to be automatically respawned consider enabling the uWSGI master process ***\n");
|
@@ -45,7 +45,8 @@ LDFLAGS = []
|
|
45
45
|
if not 'UWSGI_PYTHON_NOLIB' in os.environ:
|
46
46
|
LIBS = sysconfig.get_config_var('LIBS').split() + sysconfig.get_config_var('SYSLIBS').split()
|
47
47
|
# check if it is a non-shared build (but please, add --enable-shared to your python's ./configure script)
|
48
|
-
|
48
|
+
use_static_lib = not sysconfig.get_config_var('Py_ENABLE_SHARED')
|
49
|
+
if use_static_lib:
|
49
50
|
libdir = sysconfig.get_config_var('LIBPL')
|
50
51
|
# libdir does not exists, try to get it from the venv
|
51
52
|
version = get_python_version()
|
@@ -75,13 +76,17 @@ if not 'UWSGI_PYTHON_NOLIB' in os.environ:
|
|
75
76
|
libpath = '%s/%s' % (libdir, sysconfig.get_config_var('LIBRARY'))
|
76
77
|
if not os.path.exists(libpath):
|
77
78
|
libpath = '%s/libpython%s.a' % (libdir, version)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
|
80
|
+
if os.path.exists(libpath):
|
81
|
+
LIBS.append(libpath)
|
82
|
+
# hack for messy linkers/compilers
|
83
|
+
if '-lutil' in LIBS:
|
84
|
+
LIBS.append('-lutil')
|
85
|
+
if '-lrt' in LIBS:
|
86
|
+
LIBS.append('-lrt')
|
87
|
+
else:
|
88
|
+
use_static_lib = False
|
89
|
+
if not use_static_lib:
|
85
90
|
try:
|
86
91
|
libdir = sysconfig.get_config_var('LIBDIR')
|
87
92
|
except:
|
uwsgi-2.0.28/t/runner
ADDED
@@ -0,0 +1,258 @@
|
|
1
|
+
#!/usr/bin/python3
|
2
|
+
#
|
3
|
+
# This test suite runner runs some integration tests for uwsgi, that is
|
4
|
+
# each test launches a test server with a specific configuration and
|
5
|
+
# verifies (usually using a HTTP request) that this test server behaves as
|
6
|
+
# expected.
|
7
|
+
#
|
8
|
+
# buildconf/integration-tests.ini holds the build configuration for this
|
9
|
+
# to run fine.
|
10
|
+
|
11
|
+
|
12
|
+
import os
|
13
|
+
import requests
|
14
|
+
import signal
|
15
|
+
import socket
|
16
|
+
import subprocess
|
17
|
+
import sys
|
18
|
+
import time
|
19
|
+
import unittest
|
20
|
+
|
21
|
+
|
22
|
+
TESTS_DIR = os.path.dirname(__file__)
|
23
|
+
UWSGI_BINARY = os.getenv("UWSGI_BINARY", os.path.join(TESTS_DIR, "..", "uwsgi"))
|
24
|
+
UWSGI_PLUGINS = os.getenv("UWSGI_PLUGINS_TEST", "all").split(" ")
|
25
|
+
UWSGI_ADDR = "127.0.0.1"
|
26
|
+
UWSGI_PORT = 8000
|
27
|
+
UWSGI_HTTP = f"{UWSGI_ADDR}:{UWSGI_PORT}"
|
28
|
+
|
29
|
+
|
30
|
+
def plugins_available(plugins):
|
31
|
+
available = False
|
32
|
+
if "all" in UWSGI_PLUGINS:
|
33
|
+
available = True
|
34
|
+
else:
|
35
|
+
available = all([plugin in UWSGI_PLUGINS for plugin in plugins])
|
36
|
+
return available, f"{plugins} plugins not available but required for this test case"
|
37
|
+
|
38
|
+
|
39
|
+
class UwsgiTest(unittest.TestCase):
|
40
|
+
|
41
|
+
def start_server(self, args):
|
42
|
+
self.testserver = subprocess.Popen(
|
43
|
+
[UWSGI_BINARY] + args,
|
44
|
+
stdout=subprocess.PIPE,
|
45
|
+
stderr=subprocess.STDOUT,
|
46
|
+
text=True,
|
47
|
+
)
|
48
|
+
|
49
|
+
def uwsgi_ready(self):
|
50
|
+
try:
|
51
|
+
s = socket.socket()
|
52
|
+
s.connect(
|
53
|
+
(
|
54
|
+
UWSGI_ADDR,
|
55
|
+
UWSGI_PORT,
|
56
|
+
)
|
57
|
+
)
|
58
|
+
except socket.error:
|
59
|
+
return False
|
60
|
+
else:
|
61
|
+
return True
|
62
|
+
finally:
|
63
|
+
s.close()
|
64
|
+
|
65
|
+
def start_listen_server(self, args):
|
66
|
+
self.start_server(["--http-socket", UWSGI_HTTP] + args)
|
67
|
+
|
68
|
+
# ensure server is ready
|
69
|
+
retries = 10
|
70
|
+
while not self.uwsgi_ready() and retries > 0:
|
71
|
+
time.sleep(0.1)
|
72
|
+
retries = retries - 1
|
73
|
+
if retries == 0:
|
74
|
+
raise RuntimeError("uwsgi test server is not available")
|
75
|
+
|
76
|
+
def tearDown(self):
|
77
|
+
if hasattr(self._outcome, "errors"):
|
78
|
+
# Python 3.4 - 3.10 (These two methods have no side effects)
|
79
|
+
result = self.defaultTestResult()
|
80
|
+
self._feedErrorsToResult(result, self._outcome.errors)
|
81
|
+
else:
|
82
|
+
# Python 3.11+
|
83
|
+
result = self._outcome.result
|
84
|
+
ok = not (result.errors + result.failures)
|
85
|
+
|
86
|
+
if hasattr(self, "testserver"):
|
87
|
+
self.testserver.send_signal(signal.SIGTERM)
|
88
|
+
if not ok:
|
89
|
+
print(self.testserver.stdout.read(), file=sys.stderr)
|
90
|
+
|
91
|
+
self.testserver.wait()
|
92
|
+
self.testserver.stdout.close()
|
93
|
+
|
94
|
+
def assert_GET_body(self, url_path, body_expected):
|
95
|
+
with requests.get(f"http://{UWSGI_HTTP}{url_path}") as r:
|
96
|
+
self.assertEqual(r.text, body_expected)
|
97
|
+
|
98
|
+
def test_static_expires(self):
|
99
|
+
self.start_listen_server(
|
100
|
+
[
|
101
|
+
"--plugin",
|
102
|
+
"notfound",
|
103
|
+
os.path.join(TESTS_DIR, "static", "config.ini"),
|
104
|
+
]
|
105
|
+
)
|
106
|
+
|
107
|
+
with requests.get(f"http://{UWSGI_HTTP}/foobar/config.ini") as r:
|
108
|
+
self.assertTrue("Expires" in r.headers)
|
109
|
+
|
110
|
+
@unittest.skipUnless(*plugins_available(["python"]))
|
111
|
+
def test_mountpoints(self):
|
112
|
+
self.start_listen_server(
|
113
|
+
[
|
114
|
+
"--plugin",
|
115
|
+
"python",
|
116
|
+
os.path.join(
|
117
|
+
TESTS_DIR,
|
118
|
+
"python",
|
119
|
+
"manage_script_name",
|
120
|
+
"manage_script_name_test.ini",
|
121
|
+
),
|
122
|
+
]
|
123
|
+
)
|
124
|
+
|
125
|
+
mps = {"/foo", "/foobis/", "/footris/"}
|
126
|
+
|
127
|
+
for mp in mps:
|
128
|
+
# Requests to /foo should kick-in the managed script name.
|
129
|
+
self.assert_GET_body(mp, mp)
|
130
|
+
|
131
|
+
ends = mp.endswith("/")
|
132
|
+
|
133
|
+
# And equally requests to /foo/
|
134
|
+
self.assert_GET_body(f"{mp}/" if not ends else f"{mp}"[:-1], mp)
|
135
|
+
|
136
|
+
# Or correct requests (/foo/resource)
|
137
|
+
self.assert_GET_body(f"{mp}/resource" if not ends else f"{mp}resource", mp)
|
138
|
+
|
139
|
+
mps = {
|
140
|
+
"/fooanything",
|
141
|
+
"/foobisis/",
|
142
|
+
"/foofighters",
|
143
|
+
}
|
144
|
+
|
145
|
+
for mp in mps:
|
146
|
+
self.assert_GET_body(mp, "")
|
147
|
+
|
148
|
+
@unittest.skipUnless(*plugins_available(["python"]))
|
149
|
+
def test_python3_helloworld(self):
|
150
|
+
self.start_listen_server(
|
151
|
+
[
|
152
|
+
"--plugin",
|
153
|
+
"python",
|
154
|
+
"--wsgi-file",
|
155
|
+
os.path.join(TESTS_DIR, "python", "helloapp.py"),
|
156
|
+
]
|
157
|
+
)
|
158
|
+
|
159
|
+
self.assert_GET_body("/", "Hello World")
|
160
|
+
|
161
|
+
@unittest.skipUnless(*plugins_available(["pypy"]))
|
162
|
+
def test_pypy3_helloworld(self):
|
163
|
+
self.start_listen_server(
|
164
|
+
[
|
165
|
+
os.path.join(TESTS_DIR, "pypy", "config.ini"),
|
166
|
+
]
|
167
|
+
)
|
168
|
+
|
169
|
+
self.assert_GET_body("/", "Hello World")
|
170
|
+
|
171
|
+
@unittest.skipUnless(*plugins_available(["php"]))
|
172
|
+
def test_php_session(self):
|
173
|
+
self.start_listen_server(
|
174
|
+
[
|
175
|
+
os.path.join(TESTS_DIR, "php", "config.ini"),
|
176
|
+
]
|
177
|
+
)
|
178
|
+
|
179
|
+
self.assert_GET_body("/test.php", "PASS\n")
|
180
|
+
|
181
|
+
@unittest.skipUnless(*plugins_available(["jvm"]))
|
182
|
+
def test_jvm_hellworld(self):
|
183
|
+
classpath = ":".join(
|
184
|
+
[
|
185
|
+
"/usr/share/java/uwsgi.jar",
|
186
|
+
os.path.join(TESTS_DIR, "java"),
|
187
|
+
os.path.join(TESTS_DIR, "..", "plugins", "jvm"),
|
188
|
+
]
|
189
|
+
)
|
190
|
+
|
191
|
+
subprocess.call(
|
192
|
+
[
|
193
|
+
"javac",
|
194
|
+
"-classpath",
|
195
|
+
classpath,
|
196
|
+
os.path.join(TESTS_DIR, "java", "rpc.java"),
|
197
|
+
]
|
198
|
+
)
|
199
|
+
|
200
|
+
self.start_listen_server(
|
201
|
+
[
|
202
|
+
"--need-app=0",
|
203
|
+
"--plugins",
|
204
|
+
"0:jvm,jwsgi",
|
205
|
+
"--jvm-classpath",
|
206
|
+
classpath,
|
207
|
+
"--jwsgi",
|
208
|
+
"rpc:application",
|
209
|
+
]
|
210
|
+
)
|
211
|
+
|
212
|
+
self.assert_GET_body("/", "<h1>null</h1>")
|
213
|
+
|
214
|
+
@unittest.skipUnless(*plugins_available(["psgi"]))
|
215
|
+
def test_psgi_helloworld(self):
|
216
|
+
self.start_listen_server(
|
217
|
+
[
|
218
|
+
"--plugins",
|
219
|
+
"psgi",
|
220
|
+
"--psgi",
|
221
|
+
os.path.join(TESTS_DIR, "perl", "test_hello.psgi"),
|
222
|
+
]
|
223
|
+
)
|
224
|
+
|
225
|
+
self.assert_GET_body("/", "Hello, world!")
|
226
|
+
|
227
|
+
@unittest.skipUnless(*plugins_available(["cgi"]))
|
228
|
+
def test_cgi_helloworld(self):
|
229
|
+
self.start_listen_server(
|
230
|
+
[
|
231
|
+
"--need-app=0",
|
232
|
+
"--plugins",
|
233
|
+
"0:cgi",
|
234
|
+
"--cgi",
|
235
|
+
os.path.join(TESTS_DIR, "cgi", "hello.cgi"),
|
236
|
+
]
|
237
|
+
)
|
238
|
+
|
239
|
+
self.assert_GET_body(
|
240
|
+
"/foobar/say_hello", "Hello world!\nPATH_INFO=/foobar/say_hello\n"
|
241
|
+
)
|
242
|
+
|
243
|
+
@unittest.skipUnless(*plugins_available(["rack"]))
|
244
|
+
def test_rack_helloworld(self):
|
245
|
+
self.start_listen_server(
|
246
|
+
[
|
247
|
+
"--plugins",
|
248
|
+
"0:rack",
|
249
|
+
"--rack",
|
250
|
+
os.path.join(TESTS_DIR, "rack", "app.ru"),
|
251
|
+
]
|
252
|
+
)
|
253
|
+
|
254
|
+
self.assert_GET_body("/", "Hello")
|
255
|
+
|
256
|
+
|
257
|
+
if __name__ == "__main__":
|
258
|
+
unittest.main()
|
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'uwsgi'
|
3
3
|
s.license = 'GPL-2'
|
4
4
|
s.version = `python -c "import uwsgiconfig as uc; print uc.uwsgi_version"`.sub(/-dev-.*/,'')
|
5
|
-
s.date = '2024-
|
5
|
+
s.date = '2024-10-26'
|
6
6
|
s.summary = "uWSGI"
|
7
7
|
s.description = "The uWSGI server for Ruby/Rack"
|
8
8
|
s.authors = ["Unbit"]
|
@@ -1,59 +0,0 @@
|
|
1
|
-
#! /usr/bin/env python3
|
2
|
-
# coding = utf-8
|
3
|
-
# author = Adriano Di Luzio
|
4
|
-
|
5
|
-
# I require requests!
|
6
|
-
|
7
|
-
"""
|
8
|
-
First run:
|
9
|
-
$ ./uwsgi t/python/manage_script_name/manage_script_name_test.ini
|
10
|
-
|
11
|
-
Then run me!
|
12
|
-
"""
|
13
|
-
|
14
|
-
import unittest
|
15
|
-
import requests
|
16
|
-
|
17
|
-
HOST = "http://127.0.0.1:8080"
|
18
|
-
|
19
|
-
|
20
|
-
class ManageScriptNameTest(unittest.TestCase):
|
21
|
-
|
22
|
-
def test_classic_mountpoints(self):
|
23
|
-
mps = {
|
24
|
-
"/foo",
|
25
|
-
"/foobis/",
|
26
|
-
"/footris/"
|
27
|
-
}
|
28
|
-
|
29
|
-
for mp in mps:
|
30
|
-
# Requests to /foo should kick-in the managed script name.
|
31
|
-
r = requests.get(HOST + mp)
|
32
|
-
self.assertEqual(r.text, mp)
|
33
|
-
|
34
|
-
ends = mp.endswith("/")
|
35
|
-
|
36
|
-
# And equally requests to /foo/
|
37
|
-
r = requests.get(
|
38
|
-
HOST + mp + "/") if not ends else requests.get(HOST + mp[:-1])
|
39
|
-
self.assertEqual(r.text, mp)
|
40
|
-
|
41
|
-
# Or correct requests (/foo/resource)
|
42
|
-
r = requests.get(
|
43
|
-
HOST + mp + "/" + "resource") if not ends else requests.get(HOST + mp + "resource")
|
44
|
-
self.assertEqual(r.text, mp)
|
45
|
-
|
46
|
-
def test_intriguing_mountpoints(self):
|
47
|
-
mps = {
|
48
|
-
"/fooanything",
|
49
|
-
"/foobisis/",
|
50
|
-
"/foofighters",
|
51
|
-
}
|
52
|
-
|
53
|
-
for mp in mps:
|
54
|
-
r = requests.get(HOST + mp)
|
55
|
-
self.assertEqual(r.text, "")
|
56
|
-
|
57
|
-
|
58
|
-
if __name__ == '__main__':
|
59
|
-
unittest.main(verbosity=2)
|
uwsgi-2.0.27/t/runner
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
#!/usr/bin/python3
|
2
|
-
#
|
3
|
-
# This test suite runner runs some integration tests for uwsgi, that is
|
4
|
-
# each test launches a test server with a specific configuration and
|
5
|
-
# verifies (usually using a HTTP request) that this test server behaves as
|
6
|
-
# expected.
|
7
|
-
#
|
8
|
-
# buildconf/integration-tests.ini holds the build configuration for this
|
9
|
-
# to run fine.
|
10
|
-
|
11
|
-
|
12
|
-
import os
|
13
|
-
import requests
|
14
|
-
import signal
|
15
|
-
import socket
|
16
|
-
import subprocess
|
17
|
-
import sys
|
18
|
-
import time
|
19
|
-
import unittest
|
20
|
-
|
21
|
-
|
22
|
-
TESTS_DIR = os.path.dirname(__file__)
|
23
|
-
UWSGI_BINARY = os.getenv("UWSGI_BINARY", os.path.join(TESTS_DIR, "..", "uwsgi"))
|
24
|
-
UWSGI_PLUGINS = os.getenv("UWSGI_PLUGINS", "all").split(" ")
|
25
|
-
UWSGI_ADDR = "127.0.0.1"
|
26
|
-
UWSGI_PORT = 8000
|
27
|
-
UWSGI_HTTP = f"{UWSGI_ADDR}:{UWSGI_PORT}"
|
28
|
-
|
29
|
-
|
30
|
-
def plugins_available(plugins):
|
31
|
-
available = False
|
32
|
-
if "all" in UWSGI_PLUGINS:
|
33
|
-
available = True
|
34
|
-
else:
|
35
|
-
available = all([plugin in UWSGI_PLUGINS for plugin in plugins])
|
36
|
-
return available, f"{plugins} plugins not available but required for this test case"
|
37
|
-
|
38
|
-
|
39
|
-
class UwsgiTest(unittest.TestCase):
|
40
|
-
|
41
|
-
def start_server(self, args):
|
42
|
-
self.testserver = subprocess.Popen(
|
43
|
-
[UWSGI_BINARY] + args,
|
44
|
-
stdout=subprocess.PIPE,
|
45
|
-
stderr=subprocess.STDOUT,
|
46
|
-
text=True,
|
47
|
-
)
|
48
|
-
|
49
|
-
def uwsgi_ready(self):
|
50
|
-
try:
|
51
|
-
s = socket.socket()
|
52
|
-
s.connect(
|
53
|
-
(
|
54
|
-
UWSGI_ADDR,
|
55
|
-
UWSGI_PORT,
|
56
|
-
)
|
57
|
-
)
|
58
|
-
except socket.error:
|
59
|
-
return False
|
60
|
-
else:
|
61
|
-
return True
|
62
|
-
finally:
|
63
|
-
s.close()
|
64
|
-
|
65
|
-
def start_listen_server(self, args):
|
66
|
-
self.start_server(["--http-socket", UWSGI_HTTP] + args)
|
67
|
-
|
68
|
-
# ensure server is ready
|
69
|
-
retries = 10
|
70
|
-
while not self.uwsgi_ready() and retries > 0:
|
71
|
-
time.sleep(0.1)
|
72
|
-
retries = retries - 1
|
73
|
-
if retries == 0:
|
74
|
-
raise RuntimeError("uwsgi test server is not available")
|
75
|
-
|
76
|
-
def tearDown(self):
|
77
|
-
if hasattr(self._outcome, "errors"):
|
78
|
-
# Python 3.4 - 3.10 (These two methods have no side effects)
|
79
|
-
result = self.defaultTestResult()
|
80
|
-
self._feedErrorsToResult(result, self._outcome.errors)
|
81
|
-
else:
|
82
|
-
# Python 3.11+
|
83
|
-
result = self._outcome.result
|
84
|
-
ok = not (result.errors + result.failures)
|
85
|
-
|
86
|
-
self.testserver.send_signal(signal.SIGTERM)
|
87
|
-
if not ok:
|
88
|
-
print(self.testserver.stdout.read(), file=sys.stderr)
|
89
|
-
|
90
|
-
self.testserver.wait()
|
91
|
-
self.testserver.stdout.close()
|
92
|
-
|
93
|
-
@unittest.skipUnless(*plugins_available(["python"]))
|
94
|
-
def test_static_expires(self):
|
95
|
-
self.start_listen_server(
|
96
|
-
[
|
97
|
-
"--plugin",
|
98
|
-
"python", # provide a request plugin
|
99
|
-
os.path.join(TESTS_DIR, "static", "config.ini"),
|
100
|
-
]
|
101
|
-
)
|
102
|
-
|
103
|
-
with requests.get(f"http://{UWSGI_HTTP}/foobar/config.ini") as r:
|
104
|
-
self.assertTrue("Expires" in r.headers)
|
105
|
-
|
106
|
-
@unittest.skipUnless(*plugins_available(["python"]))
|
107
|
-
def test_python3_helloworld(self):
|
108
|
-
self.start_listen_server(
|
109
|
-
[
|
110
|
-
"--plugin",
|
111
|
-
"python",
|
112
|
-
"--wsgi-file",
|
113
|
-
os.path.join(TESTS_DIR, "python", "helloapp.py"),
|
114
|
-
]
|
115
|
-
)
|
116
|
-
|
117
|
-
with requests.get(f"http://{UWSGI_HTTP}/") as r:
|
118
|
-
self.assertEqual(r.text, "Hello World")
|
119
|
-
|
120
|
-
@unittest.skipUnless(*plugins_available(["pypy"]))
|
121
|
-
def test_pypy3_helloworld(self):
|
122
|
-
self.start_listen_server(
|
123
|
-
[
|
124
|
-
os.path.join(TESTS_DIR, "pypy", "config.ini"),
|
125
|
-
]
|
126
|
-
)
|
127
|
-
|
128
|
-
with requests.get(f"http://{UWSGI_HTTP}/") as r:
|
129
|
-
self.assertEqual(r.text, "Hello World")
|
130
|
-
|
131
|
-
@unittest.skipUnless(*plugins_available(["php"]))
|
132
|
-
def test_php_session(self):
|
133
|
-
self.start_listen_server(
|
134
|
-
[
|
135
|
-
os.path.join(TESTS_DIR, "php", "config.ini"),
|
136
|
-
]
|
137
|
-
)
|
138
|
-
|
139
|
-
with requests.get(f"http://{UWSGI_HTTP}/test.php") as r:
|
140
|
-
self.assertEqual(r.text, "PASS\n")
|
141
|
-
|
142
|
-
|
143
|
-
if __name__ == "__main__":
|
144
|
-
unittest.main()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|