uWSGI 2.0.26__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.26 → uwsgi-2.0.28}/.github/workflows/test.yml +8 -3
- {uwsgi-2.0.26 → uwsgi-2.0.28}/PKG-INFO +1 -1
- uwsgi-2.0.28/buildconf/integration-tests.ini +4 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/init.c +1 -1
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/loop.c +1 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/signal.c +1 -1
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/uwsgi.c +34 -10
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/php/common.h +2 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/php/php_plugin.c +16 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pypy/pypy_setup.py +88 -48
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/python_plugin.c +29 -15
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/pyutils.c +6 -6
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/uwsgi_python.h +15 -7
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/uwsgiplugin.py +13 -8
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pyuwsgi/pyuwsgi.c +2 -7
- {uwsgi-2.0.26 → uwsgi-2.0.28}/setup.py +1 -0
- uwsgi-2.0.28/t/cgi/hello.cgi +6 -0
- uwsgi-2.0.28/t/php/config.ini +13 -0
- uwsgi-2.0.28/t/pypy/config.ini +7 -0
- uwsgi-2.0.28/t/python/helloapp.py +3 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/manage_script_name/manage_script_name_test.ini +0 -4
- {uwsgi-2.0.26 → 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.26 → uwsgi-2.0.28}/t/static/config.ini +1 -1
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgi.gemspec +1 -1
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgi.h +4 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgiconfig.py +1 -1
- uwsgi-2.0.26/t/python/manage_script_name/test_manage_script_name.py +0 -59
- uwsgi-2.0.26/t/runner +0 -82
- {uwsgi-2.0.26 → uwsgi-2.0.28}/.github/workflows/compile-test.yml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/.gitignore +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/CONTRIBUTORS +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/INSTALL +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/LICENSE +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/Makefile +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/README +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/apache2/mod_Ruwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/apache2/mod_proxy_uwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/apache2/mod_uwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/attach.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/bin/uwsgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/all.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/asyncio.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/base.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/cgi.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/core.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/coroae.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/coverity.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/default.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/django.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/embedded.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/erlang.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/gccgo.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/gevent.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/glusterfs.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/gridfs.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/jwsgi.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/lib.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/lua.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/luap.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/minimal.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/modular.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/mono.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/nolang.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/package.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/php.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/plonly.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/ppa.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/psgi.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pyerl.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pylua.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pyonly.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pypy.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pypyonly.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pyring.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pyuwsgi.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/pyuwsginossl.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/rack.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/rados.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/rbonly.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/ring.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/ruby2.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/servlet.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/travis.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/unbit.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/unbitstaff.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/unittest.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/uwsgi.it.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/buildconf/v8.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/Uwsgi.pm +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/binder.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/centos_init_script +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/cgi_python.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/cryptologger.rb +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/emperormon.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/fdconf.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/graphite_uwsgi.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/loadapp.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/pypy/uwsgi_pypy_greenlets.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/pyuwsgi.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/runuwsgi.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/securesubscribe.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/spoolqueue/producer.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/spoolqueue/tasks.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/spoolqueue/tasksconsumer.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/subscribe.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/twuwsgi.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/upstart/emperor.conf +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/upstart/uwsgi.conf +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/upython +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/urack.rb +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi-cache-monitor.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi.erl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi.java +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi.rb +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi_client.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgi_dynamic_client.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/uwsgisubscribers.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/contrib/xinetd_uwsgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/alarm.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/async.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/buffer.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/cache.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/chunked.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/clang_fake.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/clock.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/config.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/cookie.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/cron.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/daemons.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/emperor.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/errors.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/event.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/exceptions.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/fifo.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/fsmon.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/gateway.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/hash.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/hooks.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/ini.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/io.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/json.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/legion.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/lock.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/logging. +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/logging.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/master.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/master_checks.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/master_events.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/master_utils.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/metrics.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/mount.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/mule.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/notify.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/offload.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/plugins.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/plugins_builder.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/progress.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/protocol.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/querystring.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/queue.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/rb_timers.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/reader.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/regexp.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/routing.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/rpc.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/sendfile.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/setup_utils.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/sharedarea.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/skel.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/snmp.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/socket.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/spooler.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/ssl.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/static.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/stats.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/storage.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/strings.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/subscription.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/timebomb.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/transformations.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/utils.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/websockets.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/writer.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/xmlconf.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/yaml.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/zeus.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/core/zlib.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/bootstrap.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/bootstrap2.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/bootstrap3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/bootstrap4.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/bootstrap5.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config17.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config2.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config2.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/config30.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/corostream.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/debug.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/fibers.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/fibers.yml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/flaskpost.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/heavytest.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/heavytest.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/info_uwsgi.php +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/logic.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/mega.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/mjpeg_stream.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/mojoapp.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/multi.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/multi.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/multiapp.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/protected.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/router.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/simple_app.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/simple_app_wsgi2.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/simple_logger.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/sites.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/sputnik.ws +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/staticfilesnmp.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/taskqueue.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgi.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgirouter.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgirouter2.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgirouter3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgirouter4.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgirouter5.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/uwsgistatus.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/welcome.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/welcome.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/welcome3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/werkzeug.js +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/werkzeug.yml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/werkzeug_strict.yml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/xmlindex-html.xsl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/xmlindex.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/examples/zmqgevent.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/ext/uwsgi/extconf.rb +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/install.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/lib/linux_ns.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/lib/netlink.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/lib/sun_fixes.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/logo_uWSGI.png +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/logo_uWSGI.svg +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/mongrel2-uwsgi.conf +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/airbrake/airbrake_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/airbrake/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_curl/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_speech/alarm_speech.m +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_speech/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_xmpp/gloox.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/asyncio/asyncio.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/asyncio/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cache/cache.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/carbon/carbon.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/carbon/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cgi/cgi_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/clock_monotonic/clock_monotonic.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/clock_realtime/clock_realtime.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/clock_realtime/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/corerouter/corerouter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/corerouter/cr.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/corerouter/cr_common.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/corerouter/cr_map.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/corerouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/coroae/coroae.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/coroae/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cplusplus/base.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cplusplus/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/cplusplus/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/curl_cron/curl_cron.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/curl_cron/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/dumbloop/dumb.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/dumbloop/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/dummy/dummy.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/dummy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/echo/echo_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/echo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_amqp/amqp.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_amqp/emperor_amqp.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_mongodb/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_pg/emperor_pg.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_pg/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/example/example_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/example/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/exception_log/exception_log.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/exception_log/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/fastrouter/fastrouter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/fastrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/fiber/fiber.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/fiber/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/forkptyrouter/forkptyrouter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gccgo/gccgo_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gccgo/uwsgi.go +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gccgo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/geoip/geoip.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/geoip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gevent/gevent.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gevent/gevent.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gevent/hooks.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gevent/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/glusterfs/glusterfs.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/glusterfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/graylog2/graylog2_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/graylog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/greenlet/greenlet.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/greenlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gridfs/gridfs.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gridfs/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/gridfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/common.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/http.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/https.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/keepalive.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/spdy3.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/spdy3.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jvm/jvm.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jvm/jvm_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jvm/uwsgi.java +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jvm/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jwsgi/jwsgi_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/jwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ldap/ldap.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ldap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/libffi/libffi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/libffi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/libtcc/libtcc.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/libtcc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logcrypto/logcrypto.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logcrypto/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logfile/logfile.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logfile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logpipe/logpipe.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logpipe/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logsocket/logsocket_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logsocket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logzmq/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/logzmq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/lua/lua_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/lua/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/matheval/math.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/matheval/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongodb/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongodblog/mongodblog_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongodblog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongrel2/mongrel2.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mongrel2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mono/mono_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mono/uwsgi.cs +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/mono/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/msgpack/msgpack.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/msgpack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/nagios/nagios.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/nagios/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/notfound/notfound.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/notfound/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/objc_gc/objc_gc.m +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/objc_gc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pam/pam.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pam/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/php/session.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/php/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ping/ping_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ping/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/psgi.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/psgi_loader.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/psgi_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/psgi_response.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/uwsgi_plmodule.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/psgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pty/pty.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pty/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pypy/README +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pypy/pypy_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pypy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/gil.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/profiler.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/pump_subhandler.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/pyloader.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/raw.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/symimporter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/tracebacker.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/uwsgi_pymodule.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/web3_subhandler.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/wsgi_handlers.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/wsgi_headers.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/python/wsgi_subhandler.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rack/rack_api.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rack/rack_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rack/uwsgi_rack.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rados/rados.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rados/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rawrouter/rawrouter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rawrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rbthreads/rbthreads.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rbthreads/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/redislog/redislog_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/redislog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ring/ring_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ring/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_access/router_access.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_access/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_basicauth/router_basicauth.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_basicauth/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_cache/router_cache.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_expires/expires.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_expires/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_hash/router_hash.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_hash/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_http/router_http.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_memcached/router_memcached.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_memcached/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_metrics/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_metrics/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_radius/radius.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_radius/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_redirect/router_redirect.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_redirect/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_redis/router_redis.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_redis/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_rewrite/router_rewrite.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_rewrite/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_spnego/router_spnego.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_spnego/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_static/router_static.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_static/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_uwsgi/router_uwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_xmldir/router_xmldir.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/router_xmldir/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rpc/rpc_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rpc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rrdtool/rrdtool.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rrdtool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rsyslog/rsyslog_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/rsyslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ruby19/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/servlet/servlet_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/servlet/uwsgi_servlet.java +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/servlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/signal/signal_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/signal/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/spooler/spooler_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/spooler/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/sqlite3/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/sqlite3/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ssi/ssi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ssi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/sslrouter/sslrouter.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/sslrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stackless/stackless.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stackless/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_file/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_socket/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_statsd/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/symcall/symcall_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/symcall/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/syslog/syslog_plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/syslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/systemd_logger/systemd_logger.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/systemd_logger/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tornado/tornado.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tornado/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_chunked/chunked.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_gzip/gzip.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_offload/offload.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_offload/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_template/tt.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_template/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_tofile/tofile.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_toupper/toupper.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tuntap/common.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tuntap/common.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tuntap/firewall.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tuntap/tuntap.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/tuntap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ugreen/ugreen.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/ugreen/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/v8_commonjs.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/v8_jsgi.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/v8_uwsgi.cc +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/v8/v8_uwsgi.h +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/webdav/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/webdav/webdav.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/xattr/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/xattr/xattr.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/xslt/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/xslt/xslt.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/zabbix/plugin.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/zabbix/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/zergpool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/plugins/zergpool/zergpool.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/BUILD +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/base.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/fastcgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/http.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/puwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/scgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/proto/uwsgi.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/setup.cpyext.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/setup.pyuwsgi.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/cachebitmap.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/cachebitmap.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/cachetest.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/clojure/myapp.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/core/apps/read_body_and_send.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/core/read_body_and_send.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/core/url_sanitize.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/go/cachetest.go +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/go/complextest.go +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/go/uploadtest.go +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/java/rpc.java +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/lua/basic.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/mono/cache.aspx +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/mules/mulebrain.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/mules/reload.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/mules/signal_management.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/active_workers_signal.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/apps/input_with_offset.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_benchmark.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_harakiri.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_hello.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_input_with_offset.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_post.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_sleepy.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/perl/test_streaming.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/pypy/t_continulet1.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/pypy/t_continulet2.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/forcecl.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_decorator_test.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/spooler_decorators/spooler_handlers.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/python/testba.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/README.md +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/config.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/project.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/body.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/routing/auth.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/routing/errorlimiter.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/routing/limiter.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/sharedarea/bigranges.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/sharedarea/bigranges.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/sharedarea/sharedarea_incdec.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/sharedarea/sharedarea_incdec.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/spooler/read.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/spooler/reload.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/spooler/spooldir/.gitignore +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/webdav/carddav.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/xslt/cd.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/xslt/cd.xml.xslt +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/t/xslt/routex.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/Responder.pm +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/__init__.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/badthread.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/badwrites.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/cpubound_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/cpubound_green.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/cpubound_stackless.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/main.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/master-nothreads.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/master-threads-10workers.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/master-threads-1worker.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/nomaster-threads-10workers.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/nomaster-threads-1worker.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/deadlocks/sitecustomize.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/decoratortest.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/fileserve_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/gevent_spool.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/gh-deadlocks.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/gh-python.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/gh-rack.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/gh-shared.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/grunter.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/harakiri.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/iobound_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/iobound_async_unix.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/iobound_green.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/logger.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/mako_ugreen.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/mulefunc.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/multiapp.txt +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/myadmin.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/pgbound_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/picazzo.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/psycogreen_green.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/psycopg2_green.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/pump.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/queue.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/refcount.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/rpc.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/rpc.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/runningthread.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sendchunked.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sharedarea.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sig.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/signals.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sigwait.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sleeping_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sleeping_green.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/sleepthreadasync.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/slow.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/spoolme.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/static/test.txt +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/static/test2.txt +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/staticfile.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/streamer.psgi +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/t/static.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/templates/queue.html +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testapp.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testfilewrapper.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testgevent.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testpy3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testrpc.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testsignals.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testworkers.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/testyieldnone.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/threads.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/threads_atexit.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/threads_heavy.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/travis.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/ugevent.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/web3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_chat.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_chat.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_chat_async.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_chat_asyncio.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_echo.lua +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_echo.pl +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_echo.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/websockets_echo.ru +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/tests/werkzeug_app.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/unittest/Makefile +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/unittest/check_core.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/unittest/check_regexp.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgi_main.c +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgidecorators.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/uwsgidsl.rb +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/valgrind/README +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/valgrind/valgrind-generate-sups.sh +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vassals/broodlord.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vassals/cc.ini +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vassals/multi.xml +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/flask001/app1.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/flask002/app2.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/flask003/app3.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/flask004/app4.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/flask005/app5.py +0 -0
- {uwsgi-2.0.26 → uwsgi-2.0.28}/vhosttest/nginx.conf +0 -0
@@ -22,14 +22,19 @@ jobs:
|
|
22
22
|
run: make unittests
|
23
23
|
|
24
24
|
test:
|
25
|
-
runs-on: ubuntu-
|
25
|
+
runs-on: ubuntu-22.04
|
26
26
|
steps:
|
27
27
|
- name: Install dependencies
|
28
28
|
run: |
|
29
29
|
sudo apt update -qq
|
30
30
|
sudo apt install --no-install-recommends -qqyf \
|
31
|
-
libpcre2-dev libjansson-dev libcap2-dev
|
31
|
+
libpcre2-dev libjansson-dev libcap2-dev \
|
32
|
+
php-dev libphp-embed libargon2-dev libsodium-dev \
|
33
|
+
pypy3 default-jdk-headless libperl-dev \
|
34
|
+
ruby-dev ruby-rack
|
32
35
|
- uses: actions/checkout@v4
|
36
|
+
- name: Set env
|
37
|
+
run: echo "PROFILE=integration-tests" >> $GITHUB_ENV
|
33
38
|
- name: Run integration tests
|
34
39
|
run: make all tests
|
35
40
|
|
@@ -37,7 +42,7 @@ jobs:
|
|
37
42
|
runs-on: ubuntu-20.04
|
38
43
|
strategy:
|
39
44
|
matrix:
|
40
|
-
python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
|
45
|
+
python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
|
41
46
|
test-suite: [python, deadlocks]
|
42
47
|
steps:
|
43
48
|
- name: Add deadnakes ppa
|
@@ -127,6 +127,7 @@ void *simple_loop_run(void *arg1) {
|
|
127
127
|
int main_queue = event_queue_init();
|
128
128
|
|
129
129
|
uwsgi_add_sockets_to_queue(main_queue, core_id);
|
130
|
+
event_queue_add_fd_read(main_queue, uwsgi.loop_stop_pipe[0]);
|
130
131
|
|
131
132
|
if (uwsgi.signal_socket > -1) {
|
132
133
|
event_queue_add_fd_read(main_queue, uwsgi.signal_socket);
|
@@ -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
|
}
|
@@ -197,7 +197,7 @@ static struct uwsgi_option uwsgi_base_options[] = {
|
|
197
197
|
{"freebind", no_argument, 0, "put socket in freebind mode", uwsgi_opt_true, &uwsgi.freebind, 0},
|
198
198
|
#endif
|
199
199
|
{"map-socket", required_argument, 0, "map sockets to specific workers", uwsgi_opt_add_string_list, &uwsgi.map_socket, 0},
|
200
|
-
{"enable-threads", no_argument, 'T', "enable threads", uwsgi_opt_true, &uwsgi.has_threads, 0},
|
200
|
+
{"enable-threads", no_argument, 'T', "enable threads (stub option this is true by default)", uwsgi_opt_true, &uwsgi.has_threads, 0},
|
201
201
|
{"no-threads-wait", no_argument, 0, "do not wait for threads cancellation on quit/reload", uwsgi_opt_true, &uwsgi.no_threads_wait, 0},
|
202
202
|
|
203
203
|
{"auto-procname", no_argument, 0, "automatically set processes name to something meaningful", uwsgi_opt_true, &uwsgi.auto_procname, 0},
|
@@ -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},
|
@@ -1224,16 +1224,17 @@ void gracefully_kill(int signum) {
|
|
1224
1224
|
|
1225
1225
|
uwsgi_log("Gracefully killing worker %d (pid: %d)...\n", uwsgi.mywid, uwsgi.mypid);
|
1226
1226
|
uwsgi.workers[uwsgi.mywid].manage_next_request = 0;
|
1227
|
+
|
1227
1228
|
if (uwsgi.threads > 1) {
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1229
|
+
// Stop event_queue_wait() in other threads.
|
1230
|
+
// We use loop_stop_pipe only in threaded workers to avoid
|
1231
|
+
// unintensional behavior changes in single threaded workers.
|
1232
|
+
int fd;
|
1233
|
+
if ((fd = uwsgi.loop_stop_pipe[1]) > 0) {
|
1234
|
+
close(fd);
|
1235
|
+
uwsgi.loop_stop_pipe[1] = 0;
|
1234
1236
|
}
|
1235
1237
|
return;
|
1236
|
-
// never here
|
1237
1238
|
}
|
1238
1239
|
|
1239
1240
|
// still not found a way to gracefully reload in async mode
|
@@ -1265,6 +1266,17 @@ static void simple_goodbye_cruel_world() {
|
|
1265
1266
|
// Avoid showing same message from all threads.
|
1266
1267
|
uwsgi_log("...The work of process %d is done. Seeya!\n", getpid());
|
1267
1268
|
}
|
1269
|
+
|
1270
|
+
if (uwsgi.threads > 1) {
|
1271
|
+
// Stop event_queue_wait() in other threads.
|
1272
|
+
// We use loop_stop_pipe only in threaded workers to avoid
|
1273
|
+
// unintensional behavior changes in single threaded workers.
|
1274
|
+
int fd;
|
1275
|
+
if ((fd = uwsgi.loop_stop_pipe[1]) > 0) {
|
1276
|
+
close(fd);
|
1277
|
+
uwsgi.loop_stop_pipe[1] = 0;
|
1278
|
+
}
|
1279
|
+
}
|
1268
1280
|
}
|
1269
1281
|
|
1270
1282
|
void goodbye_cruel_world() {
|
@@ -1307,6 +1319,8 @@ void kill_them_all(int signum) {
|
|
1307
1319
|
// gracefully destroy
|
1308
1320
|
void gracefully_kill_them_all(int signum) {
|
1309
1321
|
|
1322
|
+
int waitpid_status;
|
1323
|
+
|
1310
1324
|
if (uwsgi_instance_is_dying) return;
|
1311
1325
|
uwsgi.status.gracefully_destroying = 1;
|
1312
1326
|
|
@@ -1329,6 +1343,12 @@ void gracefully_kill_them_all(int signum) {
|
|
1329
1343
|
}
|
1330
1344
|
}
|
1331
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
|
+
|
1332
1352
|
uwsgi_destroy_processes();
|
1333
1353
|
}
|
1334
1354
|
|
@@ -1430,7 +1450,7 @@ void reap_them_all(int signum) {
|
|
1430
1450
|
|
1431
1451
|
void harakiri() {
|
1432
1452
|
|
1433
|
-
uwsgi_log("\
|
1453
|
+
uwsgi_log("\nKilling the current process (pid: %d app_id: %d)...\n", uwsgi.mypid, uwsgi.wsgi_req->app_id);
|
1434
1454
|
|
1435
1455
|
if (!uwsgi.master_process) {
|
1436
1456
|
uwsgi_log("*** if you want your workers to be automatically respawned consider enabling the uWSGI master process ***\n");
|
@@ -3539,6 +3559,10 @@ void uwsgi_ignition() {
|
|
3539
3559
|
exit(1);
|
3540
3560
|
}
|
3541
3561
|
}
|
3562
|
+
if (pipe(&uwsgi.loop_stop_pipe[0])) {
|
3563
|
+
uwsgi_error("pipe()")
|
3564
|
+
exit(1);
|
3565
|
+
}
|
3542
3566
|
|
3543
3567
|
// mark the worker as "accepting" (this is a mark used by chain reloading)
|
3544
3568
|
uwsgi.workers[uwsgi.mywid].accepting = 1;
|
@@ -489,6 +489,21 @@ PHP_FUNCTION(uwsgi_signal) {
|
|
489
489
|
RETURN_NULL();
|
490
490
|
}
|
491
491
|
|
492
|
+
PHP_FUNCTION(uwsgi_disconnect) {
|
493
|
+
|
494
|
+
struct wsgi_request *wsgi_req = (struct wsgi_request *) SG(server_context);
|
495
|
+
|
496
|
+
php_output_end_all();
|
497
|
+
php_header();
|
498
|
+
|
499
|
+
uwsgi_disconnect(wsgi_req);
|
500
|
+
|
501
|
+
php_output_set_status(PHP_OUTPUT_DISABLED);
|
502
|
+
|
503
|
+
RETURN_NULL();
|
504
|
+
}
|
505
|
+
|
506
|
+
|
492
507
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
|
493
508
|
ZEND_END_ARG_INFO()
|
494
509
|
|
@@ -507,6 +522,7 @@ zend_function_entry uwsgi_php_functions[] = {
|
|
507
522
|
PHP_FE(uwsgi_cache_del, arginfo_void)
|
508
523
|
PHP_FE(uwsgi_cache_clear, arginfo_void)
|
509
524
|
PHP_FE(uwsgi_cache_exists, arginfo_void)
|
525
|
+
PHP_FE(uwsgi_disconnect, arginfo_void)
|
510
526
|
{ NULL, NULL, NULL},
|
511
527
|
};
|
512
528
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import sys
|
2
2
|
import os
|
3
3
|
sys.path.insert(0, '.')
|
4
|
-
sys.path.extend(os.environ.get('PYTHONPATH','').split(os.pathsep))
|
4
|
+
sys.path.extend(os.environ.get('PYTHONPATH', '').split(os.pathsep))
|
5
5
|
import imp
|
6
6
|
import traceback
|
7
7
|
|
@@ -48,15 +48,15 @@ uwsgi_cdef = []
|
|
48
48
|
uwsgi_defines = []
|
49
49
|
uwsgi_cflags = ffi.string(lib0.uwsgi_get_cflags()).split()
|
50
50
|
for cflag in uwsgi_cflags:
|
51
|
-
if cflag.startswith('-D'):
|
52
|
-
line = cflag[2:]
|
51
|
+
if cflag.startswith(b'-D'):
|
52
|
+
line = cflag[2:].decode()
|
53
53
|
if '=' in line:
|
54
54
|
(key, value) = line.split('=', 1)
|
55
55
|
uwsgi_cdef.append('#define %s ...' % key)
|
56
|
-
uwsgi_defines.append('#define %s %s' % (key, value.replace('\\"','"').replace('""','"')))
|
56
|
+
uwsgi_defines.append('#define %s %s' % (key, value.replace('\\"','"').replace('""','"')))
|
57
57
|
else:
|
58
58
|
uwsgi_cdef.append('#define %s ...' % line)
|
59
|
-
uwsgi_defines.append('#define %s 1' % line)
|
59
|
+
uwsgi_defines.append('#define %s 1' % line)
|
60
60
|
uwsgi_dot_h = ffi.string(lib0.uwsgi_get_dot_h())
|
61
61
|
|
62
62
|
# uwsgi definitions
|
@@ -166,16 +166,27 @@ struct uwsgi_server {
|
|
166
166
|
struct uwsgi_plugin *p[];
|
167
167
|
...;
|
168
168
|
};
|
169
|
-
struct uwsgi_server uwsgi;
|
169
|
+
extern struct uwsgi_server uwsgi;
|
170
170
|
|
171
|
-
struct uwsgi_plugin pypy_plugin;
|
171
|
+
extern struct uwsgi_plugin pypy_plugin;
|
172
172
|
|
173
|
-
const char *uwsgi_pypy_version;
|
173
|
+
extern const char *uwsgi_pypy_version;
|
174
174
|
|
175
175
|
char *uwsgi_binary_path();
|
176
176
|
|
177
177
|
void *uwsgi_malloc(size_t);
|
178
178
|
|
179
|
+
struct uwsgi_logvar {
|
180
|
+
char key[256];
|
181
|
+
uint8_t keylen;
|
182
|
+
char val[256];
|
183
|
+
uint8_t vallen;
|
184
|
+
struct uwsgi_logvar *next;
|
185
|
+
};
|
186
|
+
|
187
|
+
struct uwsgi_logvar *uwsgi_logvar_get(struct wsgi_request *, char *, uint8_t);
|
188
|
+
void uwsgi_logvar_add(struct wsgi_request *, char *, uint8_t, char *, uint8_t);
|
189
|
+
|
179
190
|
int uwsgi_response_prepare_headers(struct wsgi_request *, char *, size_t);
|
180
191
|
int uwsgi_response_add_header(struct wsgi_request *, char *, uint16_t, char *, uint16_t);
|
181
192
|
int uwsgi_response_write_body_do(struct wsgi_request *, char *, size_t);
|
@@ -237,7 +248,7 @@ void uwsgi_disconnect(struct wsgi_request *);
|
|
237
248
|
|
238
249
|
int uwsgi_ready_fd(struct wsgi_request *);
|
239
250
|
|
240
|
-
void set_user_harakiri(int);
|
251
|
+
void set_user_harakiri(struct wsgi_request *, int);
|
241
252
|
|
242
253
|
int uwsgi_metric_set(char *, char *, int64_t);
|
243
254
|
int uwsgi_metric_inc(char *, char *, int64_t);
|
@@ -260,14 +271,13 @@ const char *uwsgi_pypy_version = UWSGI_VERSION;
|
|
260
271
|
extern struct uwsgi_server uwsgi;
|
261
272
|
extern struct uwsgi_plugin pypy_plugin;
|
262
273
|
%s
|
263
|
-
''' % ('\n'.join(uwsgi_defines), uwsgi_dot_h, hooks)
|
274
|
+
''' % ('\n'.join(uwsgi_defines), uwsgi_dot_h.decode(), hooks)
|
264
275
|
|
265
276
|
ffi.cdef(cdefines)
|
266
277
|
lib = ffi.verify(cverify)
|
267
278
|
libc = ffi.dlopen(None)
|
268
279
|
|
269
280
|
|
270
|
-
|
271
281
|
"""
|
272
282
|
this is a global object point the the WSGI callable
|
273
283
|
it sucks, i will fix it in the near future...
|
@@ -276,7 +286,7 @@ wsgi_application = None
|
|
276
286
|
|
277
287
|
# fix argv if needed
|
278
288
|
if len(sys.argv) == 0:
|
279
|
-
sys.argv.insert(0, ffi.string(lib.uwsgi_binary_path()))
|
289
|
+
sys.argv.insert(0, ffi.string(lib.uwsgi_binary_path()).decode())
|
280
290
|
|
281
291
|
"""
|
282
292
|
execute source, we expose it as cffi callback to avoid deadlocks
|
@@ -293,7 +303,7 @@ load a wsgi module
|
|
293
303
|
@ffi.callback("void(char *)")
|
294
304
|
def uwsgi_pypy_loader(module):
|
295
305
|
global wsgi_application
|
296
|
-
m = ffi.string(module)
|
306
|
+
m = ffi.string(module).decode()
|
297
307
|
c = 'application'
|
298
308
|
if ':' in m:
|
299
309
|
m, c = m.split(':')
|
@@ -311,7 +321,7 @@ def uwsgi_pypy_file_loader(filename):
|
|
311
321
|
global wsgi_application
|
312
322
|
w = ffi.string(filename)
|
313
323
|
c = 'application'
|
314
|
-
mod = imp.load_source('uwsgi_file_wsgi', w)
|
324
|
+
mod = imp.load_source('uwsgi_file_wsgi', w.decode())
|
315
325
|
wsgi_application = getattr(mod, c)
|
316
326
|
|
317
327
|
"""
|
@@ -320,7 +330,7 @@ load a .ini paste app
|
|
320
330
|
@ffi.callback("void(char *)")
|
321
331
|
def uwsgi_pypy_paste_loader(config):
|
322
332
|
global wsgi_application
|
323
|
-
c = ffi.string(config)
|
333
|
+
c = ffi.string(config).decode()
|
324
334
|
if c.startswith('config:'):
|
325
335
|
c = c[7:]
|
326
336
|
if c[0] != '/':
|
@@ -329,7 +339,7 @@ def uwsgi_pypy_paste_loader(config):
|
|
329
339
|
from logging.config import fileConfig
|
330
340
|
fileConfig(c)
|
331
341
|
except ImportError:
|
332
|
-
print
|
342
|
+
print("PyPy WARNING: unable to load logging.config")
|
333
343
|
from paste.deploy import loadapp
|
334
344
|
wsgi_application = loadapp('config:%s' % c)
|
335
345
|
|
@@ -347,9 +357,9 @@ add an item to the pythonpath
|
|
347
357
|
"""
|
348
358
|
@ffi.callback("void(char *)")
|
349
359
|
def uwsgi_pypy_pythonpath(item):
|
350
|
-
path = ffi.string(item)
|
360
|
+
path = ffi.string(item).decode()
|
351
361
|
sys.path.append(path)
|
352
|
-
print
|
362
|
+
print("added %s to pythonpath" % path)
|
353
363
|
|
354
364
|
|
355
365
|
"""
|
@@ -443,15 +453,17 @@ def uwsgi_pypy_wsgi_handler(wsgi_req):
|
|
443
453
|
def start_response(status, headers, exc_info=None):
|
444
454
|
if exc_info:
|
445
455
|
traceback.print_exception(*exc_info)
|
456
|
+
status = status.encode()
|
446
457
|
lib.uwsgi_response_prepare_headers(wsgi_req, ffi.new("char[]", status), len(status))
|
447
458
|
for hh in headers:
|
459
|
+
hh = (hh[0].encode(), hh[1].encode())
|
448
460
|
lib.uwsgi_response_add_header(wsgi_req, ffi.new("char[]", hh[0]), len(hh[0]), ffi.new("char[]", hh[1]), len(hh[1]))
|
449
461
|
return writer
|
450
462
|
|
451
463
|
environ = {}
|
452
464
|
iov = wsgi_req.hvec
|
453
465
|
for i in range(0, wsgi_req.var_cnt, 2):
|
454
|
-
environ[ffi.string(ffi.cast("char*", iov[i].iov_base), iov[i].iov_len)] = ffi.string(ffi.cast("char*", iov[i+1].iov_base), iov[i+1].iov_len)
|
466
|
+
environ[ffi.string(ffi.cast("char*", iov[i].iov_base), iov[i].iov_len).decode()] = ffi.string(ffi.cast("char*", iov[i+1].iov_base), iov[i+1].iov_len).decode()
|
455
467
|
|
456
468
|
environ['wsgi.version'] = (1, 0)
|
457
469
|
scheme = 'http'
|
@@ -568,8 +580,8 @@ uwsgi.rpc = uwsgi_pypy_rpc
|
|
568
580
|
|
569
581
|
def uwsgi_pypy_call(func, *args):
|
570
582
|
node = None
|
571
|
-
if '@' in func:
|
572
|
-
(func, node) = func.split('@')
|
583
|
+
if b'@' in func:
|
584
|
+
(func, node) = func.split(b'@')
|
573
585
|
return uwsgi_pypy_rpc(node, func, *args)
|
574
586
|
uwsgi.call = uwsgi_pypy_call
|
575
587
|
|
@@ -708,7 +720,7 @@ uwsgi.suspend()
|
|
708
720
|
def uwsgi_pypy_suspend():
|
709
721
|
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
710
722
|
if lib.uwsgi.schedule_to_main:
|
711
|
-
lib.uwsgi.schedule_to_main(wsgi_req)
|
723
|
+
lib.uwsgi.schedule_to_main(wsgi_req)
|
712
724
|
uwsgi.suspend = uwsgi_pypy_suspend
|
713
725
|
|
714
726
|
"""
|
@@ -723,7 +735,7 @@ def uwsgi_pypy_workers():
|
|
723
735
|
worker['requests'] = lib.uwsgi.workers[i].requests
|
724
736
|
worker['delta_requests'] = lib.uwsgi.workers[i].delta_requests
|
725
737
|
worker['signals'] = lib.uwsgi.workers[i].signals
|
726
|
-
worker['exceptions'] = lib.uwsgi_worker_exceptions(i)
|
738
|
+
worker['exceptions'] = lib.uwsgi_worker_exceptions(i)
|
727
739
|
worker['apps'] = []
|
728
740
|
if lib.uwsgi.workers[i].cheaped:
|
729
741
|
worker['status'] == 'cheap'
|
@@ -750,8 +762,8 @@ uwsgi.async_sleep(timeout)
|
|
750
762
|
"""
|
751
763
|
def uwsgi_pypy_async_sleep(timeout):
|
752
764
|
if timeout > 0:
|
753
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
754
|
-
lib.async_add_timeout(wsgi_req, timeout)
|
765
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
766
|
+
lib.async_add_timeout(wsgi_req, timeout)
|
755
767
|
uwsgi.async_sleep = uwsgi_pypy_async_sleep
|
756
768
|
|
757
769
|
"""
|
@@ -770,7 +782,7 @@ uwsgi.connection_fd = lambda: uwsgi_pypy_current_wsgi_req().fd
|
|
770
782
|
uwsgi.wait_fd_read(fd, timeout=0)
|
771
783
|
"""
|
772
784
|
def uwsgi_pypy_wait_fd_read(fd, timeout=0):
|
773
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
785
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
774
786
|
if lib.async_add_fd_read(wsgi_req, fd, timeout) < 0:
|
775
787
|
raise Exception("unable to add fd %d to the event queue" % fd)
|
776
788
|
uwsgi.wait_fd_read = uwsgi_pypy_wait_fd_read
|
@@ -779,7 +791,7 @@ uwsgi.wait_fd_read = uwsgi_pypy_wait_fd_read
|
|
779
791
|
uwsgi.wait_fd_write(fd, timeout=0)
|
780
792
|
"""
|
781
793
|
def uwsgi_pypy_wait_fd_write(fd, timeout=0):
|
782
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
794
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
783
795
|
if lib.async_add_fd_write(wsgi_req, fd, timeout) < 0:
|
784
796
|
raise Exception("unable to add fd %d to the event queue" % fd)
|
785
797
|
uwsgi.wait_fd_write = uwsgi_pypy_wait_fd_write
|
@@ -788,7 +800,7 @@ uwsgi.wait_fd_write = uwsgi_pypy_wait_fd_write
|
|
788
800
|
uwsgi.ready_fd()
|
789
801
|
"""
|
790
802
|
def uwsgi_pypy_ready_fd():
|
791
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
803
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
792
804
|
return lib.uwsgi_ready_fd(wsgi_req)
|
793
805
|
uwsgi.ready_fd = uwsgi_pypy_ready_fd
|
794
806
|
|
@@ -800,7 +812,7 @@ def uwsgi_pypy_send(*args):
|
|
800
812
|
if len(args) == 0:
|
801
813
|
raise ValueError("uwsgi.send() takes at least 1 argument")
|
802
814
|
elif len(args) == 1:
|
803
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
815
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
804
816
|
fd = wsgi_req.fd
|
805
817
|
data = args[0]
|
806
818
|
else:
|
@@ -819,7 +831,7 @@ def uwsgi_pypy_recv(*args):
|
|
819
831
|
if len(args) == 0:
|
820
832
|
raise ValueError("uwsgi.recv() takes at least 1 argument")
|
821
833
|
elif len(args) == 1:
|
822
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
834
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
823
835
|
fd = wsgi_req.fd
|
824
836
|
l = args[0]
|
825
837
|
else:
|
@@ -846,8 +858,8 @@ uwsgi.disconnect = lambda: lib.uwsgi_disconnect(uwsgi_pypy_current_wsgi_req())
|
|
846
858
|
uwsgi.websocket_recv()
|
847
859
|
"""
|
848
860
|
def uwsgi_pypy_websocket_recv():
|
849
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
850
|
-
ub = lib.uwsgi_websocket_recv(wsgi_req)
|
861
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
862
|
+
ub = lib.uwsgi_websocket_recv(wsgi_req)
|
851
863
|
if ub == ffi.NULL:
|
852
864
|
raise IOError("unable to receive websocket message")
|
853
865
|
ret = ffi.buffer(ub.buf, ub.pos)[:]
|
@@ -859,8 +871,8 @@ uwsgi.websocket_recv = uwsgi_pypy_websocket_recv
|
|
859
871
|
uwsgi.websocket_recv_nb()
|
860
872
|
"""
|
861
873
|
def uwsgi_pypy_websocket_recv_nb():
|
862
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
863
|
-
ub = lib.uwsgi_websocket_recv_nb(wsgi_req)
|
874
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
875
|
+
ub = lib.uwsgi_websocket_recv_nb(wsgi_req)
|
864
876
|
if ub == ffi.NULL:
|
865
877
|
raise IOError("unable to receive websocket message")
|
866
878
|
ret = ffi.buffer(ub.buf, ub.pos)[:]
|
@@ -872,7 +884,7 @@ uwsgi.websocket_recv_nb = uwsgi_pypy_websocket_recv_nb
|
|
872
884
|
uwsgi.websocket_handshake(key, origin)
|
873
885
|
"""
|
874
886
|
def uwsgi_pypy_websocket_handshake(key='', origin='', proto=''):
|
875
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
887
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
876
888
|
c_key = ffi.new('char[]', key)
|
877
889
|
c_origin = ffi.new('char[]', origin)
|
878
890
|
c_proto = ffi.new('char[]', proto)
|
@@ -884,7 +896,7 @@ uwsgi.websocket_handshake = uwsgi_pypy_websocket_handshake
|
|
884
896
|
uwsgi.websocket_send(msg)
|
885
897
|
"""
|
886
898
|
def uwsgi_pypy_websocket_send(msg):
|
887
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
899
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
888
900
|
if lib.uwsgi_websocket_send(wsgi_req, ffi.new('char[]', msg), len(msg)) < 0:
|
889
901
|
raise IOError("unable to send websocket message")
|
890
902
|
uwsgi.websocket_send = uwsgi_pypy_websocket_send
|
@@ -893,7 +905,7 @@ uwsgi.websocket_send = uwsgi_pypy_websocket_send
|
|
893
905
|
uwsgi.chunked_read(timeout=0)
|
894
906
|
"""
|
895
907
|
def uwsgi_pypy_chunked_read(timeout=0):
|
896
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
908
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
897
909
|
rlen = ffi.new("size_t*")
|
898
910
|
chunk = lib.uwsgi_chunked_read(wsgi_req, rlen, timeout, 0)
|
899
911
|
if chunk == ffi.NULL:
|
@@ -905,7 +917,7 @@ uwsgi.chunked_read = uwsgi_pypy_chunked_read
|
|
905
917
|
uwsgi.chunked_read_nb()
|
906
918
|
"""
|
907
919
|
def uwsgi_pypy_chunked_read_nb():
|
908
|
-
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
920
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
909
921
|
rlen = ffi.new("size_t*")
|
910
922
|
chunk = lib.uwsgi_chunked_read(wsgi_req, rlen, 0, 1)
|
911
923
|
if chunk == ffi.NULL:
|
@@ -915,14 +927,42 @@ def uwsgi_pypy_chunked_read_nb():
|
|
915
927
|
return ffi.buffer(chunk, rlen[0])[:]
|
916
928
|
uwsgi.chunked_read_nb = uwsgi_pypy_chunked_read_nb
|
917
929
|
|
918
|
-
|
919
|
-
|
920
|
-
"""
|
921
|
-
uwsgi.set_user_harakiri
|
930
|
+
|
931
|
+
def uwsgi_pypy_set_user_harakiri(x):
|
932
|
+
"""
|
933
|
+
uwsgi.set_user_harakiri(sec)
|
934
|
+
"""
|
935
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
936
|
+
lib.set_user_harakiri(wsgi_req, x)
|
937
|
+
uwsgi.set_user_harakiri = uwsgi_pypy_set_user_harakiri
|
938
|
+
|
939
|
+
|
940
|
+
def uwsgi_pypy_get_logvar(key):
|
941
|
+
"""
|
942
|
+
uwsgi.get_logvar(key)
|
943
|
+
"""
|
944
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
945
|
+
c_key = ffi.new('char[]', key)
|
946
|
+
lv = lib.uwsgi_logvar_get(wsgi_req, c_key, len(key))
|
947
|
+
if lv:
|
948
|
+
return ffi.string(lv.val[0:lv.vallen])
|
949
|
+
return None
|
950
|
+
uwsgi.get_logvar = uwsgi_pypy_get_logvar
|
951
|
+
|
952
|
+
|
953
|
+
def uwsgi_pypy_set_logvar(key, val):
|
954
|
+
"""
|
955
|
+
uwsgi.set_logvar(key, value)
|
956
|
+
"""
|
957
|
+
wsgi_req = uwsgi_pypy_current_wsgi_req()
|
958
|
+
c_key = ffi.new('char[]', key)
|
959
|
+
c_val = ffi.new('char[]', val)
|
960
|
+
lib.uwsgi_logvar_add(wsgi_req, c_key, len(key), c_val, len(val))
|
961
|
+
uwsgi.set_logvar = uwsgi_pypy_set_logvar
|
922
962
|
|
923
963
|
|
924
|
-
print
|
925
|
-
print
|
964
|
+
print("Initialized PyPy with Python %s" % sys.version)
|
965
|
+
print("PyPy Home: %s" % sys.prefix)
|
926
966
|
|
927
967
|
|
928
968
|
"""
|
@@ -939,7 +979,7 @@ def uwsgi_pypy_continulet_wrapper(cont):
|
|
939
979
|
@ffi.callback("void()")
|
940
980
|
def uwsgi_pypy_continulet_schedule():
|
941
981
|
id = lib.uwsgi.wsgi_req.async_id
|
942
|
-
modifier1 = lib.uwsgi.wsgi_req.uh.modifier1
|
982
|
+
modifier1 = lib.uwsgi.wsgi_req.uh.modifier1
|
943
983
|
|
944
984
|
# generate a new continulet
|
945
985
|
if not lib.uwsgi.wsgi_req.suspended:
|
@@ -961,7 +1001,7 @@ def uwsgi_pypy_continulet_schedule():
|
|
961
1001
|
@ffi.callback("void(struct wsgi_request *)")
|
962
1002
|
def uwsgi_pypy_continulet_switch(wsgi_req):
|
963
1003
|
id = wsgi_req.async_id
|
964
|
-
modifier1 = wsgi_req.uh.modifier1
|
1004
|
+
modifier1 = wsgi_req.uh.modifier1
|
965
1005
|
|
966
1006
|
# this is called in the current continulet
|
967
1007
|
if lib.uwsgi.p[modifier1].suspend:
|
@@ -977,8 +1017,8 @@ def uwsgi_pypy_continulet_switch(wsgi_req):
|
|
977
1017
|
lib.uwsgi.wsgi_req = wsgi_req
|
978
1018
|
|
979
1019
|
def uwsgi_pypy_setup_continulets():
|
980
|
-
if lib.uwsgi
|
1020
|
+
if lib.uwsgi["async"] < 1:
|
981
1021
|
raise Exception("pypy continulets require async mode !!!")
|
982
1022
|
lib.uwsgi.schedule_to_main = uwsgi_pypy_continulet_switch
|
983
1023
|
lib.uwsgi.schedule_to_req = uwsgi_pypy_continulet_schedule
|
984
|
-
print
|
1024
|
+
print("*** PyPy Continulets engine loaded ***")
|