uWSGI 2.0.20__tar.gz → 2.0.22__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.20 → uwsgi-2.0.22}/.github/workflows/compile-test.yml +11 -6
- uwsgi-2.0.22/.github/workflows/test.yml +75 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/PKG-INFO +1 -1
- uwsgi-2.0.22/README +13 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/apache2/mod_proxy_uwsgi.c +35 -13
- uwsgi-2.0.22/buildconf/travis.ini +3 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/init.c +2 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/master_checks.c +45 -10
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/master_utils.c +28 -2
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/metrics.c +4 -4
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/mount.c +4 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/utils.c +2 -3
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/uwsgi.c +3 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/coroae/uwsgiplugin.py +1 -1
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gccgo/uwsgiplugin.py +4 -2
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gevent/gevent.h +1 -1
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jvm/uwsgiplugin.py +16 -12
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mono/uwsgiplugin.py +6 -4
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/php/php_plugin.c +49 -36
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/profiler.c +20 -5
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/python_plugin.c +101 -16
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/uwsgi_python.h +17 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/uwsgiplugin.py +2 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/wsgi_subhandler.c +16 -15
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rack/rack_api.c +56 -56
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rack/rack_plugin.c +12 -8
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rack/uwsgiplugin.py +2 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ruby19/uwsgiplugin.py +3 -1
- {uwsgi-2.0.20 → uwsgi-2.0.22}/setup.py +2 -0
- uwsgi-2.0.22/tests/deadlocks/main.py +4 -0
- uwsgi-2.0.22/tests/deadlocks/master-nothreads.ini +6 -0
- uwsgi-2.0.22/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +7 -0
- uwsgi-2.0.22/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +7 -0
- uwsgi-2.0.22/tests/deadlocks/master-threads-10workers.ini +6 -0
- uwsgi-2.0.22/tests/deadlocks/master-threads-1worker.ini +6 -0
- uwsgi-2.0.22/tests/deadlocks/nomaster-threads-10workers.ini +6 -0
- uwsgi-2.0.22/tests/deadlocks/nomaster-threads-1worker.ini +6 -0
- uwsgi-2.0.22/tests/deadlocks/sitecustomize.py +14 -0
- uwsgi-2.0.22/tests/gh-deadlocks.sh +12 -0
- uwsgi-2.0.22/tests/gh-python.sh +12 -0
- uwsgi-2.0.22/tests/gh-rack.sh +12 -0
- uwsgi-2.0.22/tests/gh-shared.sh +108 -0
- uwsgi-2.0.22/tests/harakiri.py +25 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/travis.sh +22 -3
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgi.gemspec +1 -1
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgi.h +9 -1
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgiconfig.py +32 -34
- uwsgi-2.0.20/.github/workflows/test.yml +0 -57
- uwsgi-2.0.20/README +0 -5
- uwsgi-2.0.20/buildconf/travis.ini +0 -3
- {uwsgi-2.0.20 → uwsgi-2.0.22}/.gitignore +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/CONTRIBUTORS +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/INSTALL +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/LICENSE +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/Makefile +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/apache2/mod_Ruwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/apache2/mod_uwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/attach.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/bin/uwsgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/all.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/asyncio.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/base.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/cgi.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/core.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/coroae.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/coverity.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/default.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/django.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/embedded.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/erlang.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/gccgo.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/gevent.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/glusterfs.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/gridfs.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/jwsgi.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/lib.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/lua.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/luap.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/minimal.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/modular.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/mono.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/nolang.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/package.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/php.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/plonly.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/ppa.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/psgi.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pyerl.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pylua.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pyonly.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pypy.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pypyonly.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pyring.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pyuwsgi.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/pyuwsginossl.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/rack.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/rados.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/rbonly.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/ring.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/ruby2.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/servlet.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/unbit.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/unbitstaff.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/uwsgi.it.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/buildconf/v8.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/Uwsgi.pm +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/binder.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/centos_init_script +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/cgi_python.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/cryptologger.rb +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/emperormon.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/fdconf.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/graphite_uwsgi.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/loadapp.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/pypy/uwsgi_pypy_greenlets.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/pyuwsgi.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/runuwsgi.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/securesubscribe.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/spoolqueue/producer.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/spoolqueue/tasks.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/spoolqueue/tasksconsumer.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/subscribe.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/twuwsgi.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/upstart/emperor.conf +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/upstart/uwsgi.conf +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/upython +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/urack.rb +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi-cache-monitor.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi.erl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi.java +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi.rb +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi_client.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgi_dynamic_client.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/uwsgisubscribers.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/contrib/xinetd_uwsgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/alarm.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/async.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/buffer.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/cache.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/chunked.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/clang_fake.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/clock.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/config.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/cookie.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/cron.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/daemons.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/emperor.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/errors.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/event.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/exceptions.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/fifo.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/fsmon.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/gateway.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/hash.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/hooks.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/ini.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/io.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/json.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/legion.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/lock.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/logging. +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/logging.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/loop.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/master.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/master_events.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/mule.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/notify.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/offload.c +2 -2
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/plugins.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/plugins_builder.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/progress.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/protocol.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/querystring.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/queue.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/rb_timers.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/reader.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/regexp.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/routing.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/rpc.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/sendfile.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/setup_utils.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/sharedarea.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/signal.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/skel.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/snmp.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/socket.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/spooler.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/ssl.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/static.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/stats.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/storage.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/strings.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/subscription.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/timebomb.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/transformations.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/websockets.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/writer.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/xmlconf.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/yaml.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/zeus.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/core/zlib.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/bootstrap.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/bootstrap2.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/bootstrap3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/bootstrap4.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/bootstrap5.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config17.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config2.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config2.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/config30.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/corostream.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/debug.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/fibers.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/fibers.yml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/flaskpost.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/heavytest.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/heavytest.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/info_uwsgi.php +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/logic.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/mega.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/mjpeg_stream.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/mojoapp.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/multi.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/multi.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/multiapp.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/protected.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/router.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/simple_app.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/simple_app_wsgi2.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/simple_logger.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/sites.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/sputnik.ws +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/staticfilesnmp.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/taskqueue.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgi.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgirouter.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgirouter2.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgirouter3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgirouter4.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgirouter5.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/uwsgistatus.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/welcome.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/welcome.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/welcome3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/werkzeug.js +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/werkzeug.yml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/werkzeug_strict.yml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/xmlindex-html.xsl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/xmlindex.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/examples/zmqgevent.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/ext/uwsgi/extconf.rb +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/install.sh +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/lib/linux_ns.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/lib/netlink.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/lib/sun_fixes.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/logo_uWSGI.png +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/logo_uWSGI.svg +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/mongrel2-uwsgi.conf +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/airbrake/airbrake_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/airbrake/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_curl/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_speech/alarm_speech.m +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_speech/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_xmpp/gloox.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/asyncio/asyncio.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/asyncio/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cache/cache.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/carbon/carbon.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/carbon/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cgi/cgi_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/clock_monotonic/clock_monotonic.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/clock_realtime/clock_realtime.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/clock_realtime/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/corerouter/corerouter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/corerouter/cr.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/corerouter/cr_common.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/corerouter/cr_map.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/corerouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/coroae/coroae.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cplusplus/base.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cplusplus/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/cplusplus/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/curl_cron/curl_cron.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/curl_cron/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/dumbloop/dumb.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/dumbloop/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/dummy/dummy.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/dummy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/echo/echo_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/echo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_amqp/amqp.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_amqp/emperor_amqp.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_mongodb/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_pg/emperor_pg.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_pg/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/example/example_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/example/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/exception_log/exception_log.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/exception_log/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/fastrouter/fastrouter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/fastrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/fiber/fiber.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/fiber/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/forkptyrouter/forkptyrouter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gccgo/gccgo_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gccgo/uwsgi.go +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/geoip/geoip.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/geoip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gevent/gevent.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gevent/hooks.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gevent/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/glusterfs/glusterfs.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/glusterfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/graylog2/graylog2_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/graylog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/greenlet/greenlet.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/greenlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gridfs/gridfs.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gridfs/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/gridfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/common.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/http.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/https.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/keepalive.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/spdy3.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/spdy3.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jvm/jvm.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jvm/jvm_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jvm/uwsgi.java +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jwsgi/jwsgi_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/jwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ldap/ldap.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ldap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/libffi/libffi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/libffi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/libtcc/libtcc.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/libtcc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logcrypto/logcrypto.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logcrypto/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logfile/logfile.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logfile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logpipe/logpipe.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logpipe/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logsocket/logsocket_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logsocket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logzmq/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/logzmq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/lua/lua_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/lua/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/matheval/math.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/matheval/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongodb/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongodblog/mongodblog_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongodblog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongrel2/mongrel2.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mongrel2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mono/mono_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/mono/uwsgi.cs +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/msgpack/msgpack.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/msgpack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/nagios/nagios.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/nagios/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/notfound/notfound.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/notfound/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/objc_gc/objc_gc.m +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/objc_gc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pam/pam.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pam/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/php/common.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/php/session.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/php/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ping/ping_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ping/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/psgi.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/psgi_loader.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/psgi_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/psgi_response.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/uwsgi_plmodule.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/psgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pty/pty.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pty/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pypy/README +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pypy/pypy_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pypy/pypy_setup.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pypy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/gil.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/pump_subhandler.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/pyloader.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/pyutils.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/raw.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/symimporter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/tracebacker.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/uwsgi_pymodule.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/web3_subhandler.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/wsgi_handlers.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/python/wsgi_headers.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pyuwsgi/pyuwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rack/uwsgi_rack.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rados/rados.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rados/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rawrouter/rawrouter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rawrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rbthreads/rbthreads.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rbthreads/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/redislog/redislog_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/redislog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ring/ring_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ring/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_access/router_access.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_access/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_basicauth/router_basicauth.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_basicauth/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_cache/router_cache.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_expires/expires.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_expires/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_hash/router_hash.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_hash/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_http/router_http.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_memcached/router_memcached.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_memcached/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_metrics/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_metrics/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_radius/radius.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_radius/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_redirect/router_redirect.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_redirect/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_redis/router_redis.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_redis/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_rewrite/router_rewrite.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_rewrite/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_spnego/router_spnego.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_spnego/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_static/router_static.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_static/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_uwsgi/router_uwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_xmldir/router_xmldir.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/router_xmldir/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rpc/rpc_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rpc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rrdtool/rrdtool.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rrdtool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rsyslog/rsyslog_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/rsyslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/servlet/servlet_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/servlet/uwsgi_servlet.java +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/servlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/signal/signal_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/signal/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/spooler/spooler_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/spooler/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/sqlite3/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/sqlite3/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ssi/ssi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ssi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/sslrouter/sslrouter.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/sslrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stackless/stackless.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stackless/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_file/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_socket/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_statsd/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/symcall/symcall_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/symcall/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/syslog/syslog_plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/syslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/systemd_logger/systemd_logger.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/systemd_logger/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tornado/tornado.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tornado/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_chunked/chunked.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_gzip/gzip.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_offload/offload.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_offload/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_template/tt.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_template/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_tofile/tofile.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_toupper/toupper.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tuntap/common.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tuntap/common.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tuntap/firewall.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tuntap/tuntap.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/tuntap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ugreen/ugreen.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/ugreen/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/v8_commonjs.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/v8_jsgi.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/v8_uwsgi.cc +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/v8/v8_uwsgi.h +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/webdav/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/webdav/webdav.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/xattr/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/xattr/xattr.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/xslt/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/xslt/xslt.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/zabbix/plugin.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/zabbix/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/zergpool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/plugins/zergpool/zergpool.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/BUILD +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/base.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/fastcgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/http.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/puwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/scgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/proto/uwsgi.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/setup.cpyext.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/setup.pyuwsgi.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/cachebitmap.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/cachebitmap.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/cachetest.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/clojure/myapp.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/core/apps/read_body_and_send.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/core/read_body_and_send.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/core/url_sanitize.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/go/cachetest.go +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/go/complextest.go +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/go/uploadtest.go +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/java/rpc.java +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/lua/basic.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/mono/cache.aspx +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/mules/mulebrain.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/mules/reload.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/mules/signal_management.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/active_workers_signal.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/apps/input_with_offset.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_benchmark.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_harakiri.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_hello.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_input_with_offset.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_post.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_sleepy.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/perl/test_streaming.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/pypy/t_continulet1.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/pypy/t_continulet2.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/forcecl.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/manage_script_name/manage_script_name_test.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/manage_script_name/test_manage_script_name.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/manage_script_name/useless_app.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_decorator_test.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_handlers.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/python/testba.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/README.md +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/config.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/project.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/body.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/routing/auth.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/routing/errorlimiter.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/routing/limiter.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/sharedarea/bigranges.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/sharedarea/bigranges.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/sharedarea/sharedarea_incdec.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/sharedarea/sharedarea_incdec.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/spooler/read.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/spooler/reload.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/spooler/spooldir/.gitignore +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/webdav/carddav.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/xslt/cd.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/xslt/cd.xml.xslt +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/t/xslt/routex.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/Responder.pm +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/__init__.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/badthread.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/badwrites.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/cpubound_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/cpubound_green.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/cpubound_stackless.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/decoratortest.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/fileserve_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/gevent_spool.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/grunter.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/iobound_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/iobound_async_unix.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/iobound_green.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/logger.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/mako_ugreen.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/mulefunc.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/multiapp.txt +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/myadmin.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/pgbound_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/picazzo.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/psycogreen_green.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/psycopg2_green.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/pump.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/queue.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/refcount.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/rpc.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/rpc.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/runningthread.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sendchunked.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sharedarea.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sig.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/signals.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sigwait.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sleeping_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sleeping_green.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/sleepthreadasync.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/slow.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/spoolme.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/static/test.txt +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/static/test2.txt +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/staticfile.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/streamer.psgi +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/t/static.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/templates/queue.html +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testapp.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testfilewrapper.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testgevent.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testpy3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testrpc.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testsignals.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testworkers.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/testyieldnone.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/threads.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/ugevent.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/web3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_chat.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_chat.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_chat_async.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_chat_asyncio.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_echo.lua +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_echo.pl +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_echo.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/websockets_echo.ru +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/tests/werkzeug_app.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgi_main.c +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgidecorators.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/uwsgidsl.rb +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/valgrind/README +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/valgrind/valgrind-generate-sups.sh +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vassals/broodlord.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vassals/cc.ini +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vassals/multi.xml +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/flask001/app1.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/flask002/app2.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/flask003/app3.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/flask004/app4.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/flask005/app5.py +0 -0
- {uwsgi-2.0.20 → uwsgi-2.0.22}/vhosttest/nginx.conf +0 -0
@@ -9,16 +9,21 @@ on:
|
|
9
9
|
jobs:
|
10
10
|
build:
|
11
11
|
|
12
|
-
runs-on: ubuntu-
|
12
|
+
runs-on: ubuntu-20.04
|
13
13
|
|
14
14
|
steps:
|
15
|
+
- name: remove sury php ppa that does not ship libphpX.Y-embed
|
16
|
+
run: |
|
17
|
+
sudo add-apt-repository --remove ppa:ondrej/php
|
18
|
+
sudo apt remove php7.4-dev php7.4 php7.4-common
|
15
19
|
- name: Install dependencies
|
16
20
|
run: |
|
17
21
|
sudo apt update -qq
|
18
|
-
sudo apt install --no-install-recommends -qqyf python3.
|
22
|
+
sudo apt install --no-install-recommends -qqyf python3.8-dev \
|
19
23
|
libxml2-dev libpcre3-dev libcap2-dev \
|
20
|
-
|
21
|
-
|
24
|
+
libargon2-0-dev libsodium-dev \
|
25
|
+
php7.4-dev libphp7.4-embed \
|
26
|
+
liblua5.1-0-dev ruby2.7-dev \
|
22
27
|
libjansson-dev libldap2-dev libpq-dev \
|
23
28
|
libpam0g-dev libsqlite3-dev libyaml-dev \
|
24
29
|
libzmq3-dev libmatheval-dev libperl-dev \
|
@@ -27,12 +32,12 @@ jobs:
|
|
27
32
|
libboost-thread-dev libboost-filesystem-dev \
|
28
33
|
libssl-dev libacl1-dev python-greenlet-dev \
|
29
34
|
libcurl4-openssl-dev \
|
30
|
-
openjdk-
|
35
|
+
openjdk-11-jdk libgloox-dev gccgo \
|
31
36
|
cli-common-dev mono-devel mono-mcs uuid-dev \
|
32
37
|
curl check
|
33
38
|
- uses: actions/checkout@v2
|
34
39
|
- name: Build kitchensink uWSGI binary
|
35
|
-
run: UWSGICONFIG_PHPPATH=php-config7.
|
40
|
+
run: UWSGICONFIG_PHPPATH=php-config7.4 /usr/bin/python3 uwsgiconfig.py --build travis
|
36
41
|
- name: Build uWSGI binary
|
37
42
|
run: |
|
38
43
|
/usr/bin/python3 uwsgiconfig.py --build base
|
@@ -0,0 +1,75 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master, uwsgi-2.0 ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master, uwsgi-2.0 ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
python:
|
11
|
+
|
12
|
+
runs-on: ubuntu-20.04
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
|
16
|
+
test-suite: [unittest, python, deadlocks]
|
17
|
+
steps:
|
18
|
+
- name: Add deadnakes ppa
|
19
|
+
run: sudo add-apt-repository ppa:deadsnakes/ppa -y
|
20
|
+
- name: Install dependencies
|
21
|
+
run: |
|
22
|
+
sudo apt update -qq
|
23
|
+
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-dev \
|
24
|
+
libpcre3-dev libjansson-dev libcap2-dev \
|
25
|
+
curl check
|
26
|
+
- name: Install distutils
|
27
|
+
if: contains(fromJson('["3.6","3.7","3.8","3.9","3.10","3.11"]'), matrix.python-version)
|
28
|
+
run: |
|
29
|
+
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-distutils \
|
30
|
+
- uses: actions/checkout@v2
|
31
|
+
- name: Run unit tests
|
32
|
+
if: matrix.test-suite == 'unittest'
|
33
|
+
run: make tests
|
34
|
+
- name: Build uWSGI binary
|
35
|
+
if: matrix.test-suite != 'unittest'
|
36
|
+
run: make
|
37
|
+
- name: Build python${{ matrix.python-version }} plugin
|
38
|
+
if: matrix.test-suite != 'unittest'
|
39
|
+
run: |
|
40
|
+
PYTHON_VERSION=${{ matrix.python-version }}
|
41
|
+
PYTHON_VERSION=python${PYTHON_VERSION//.}
|
42
|
+
/usr/bin/python${{ matrix.python-version }} -V
|
43
|
+
/usr/bin/python${{ matrix.python-version }} uwsgiconfig.py --plugin plugins/python base $PYTHON_VERSION
|
44
|
+
- name: run smoke tests
|
45
|
+
if: matrix.test-suite != 'unittest'
|
46
|
+
run: |
|
47
|
+
PYTHON_VERSION=${{ matrix.python-version }}
|
48
|
+
PYTHON_VERSION=python${PYTHON_VERSION//.}
|
49
|
+
./tests/gh-${{ matrix.test-suite }}.sh ${PYTHON_VERSION}
|
50
|
+
|
51
|
+
rack:
|
52
|
+
|
53
|
+
runs-on: ubuntu-20.04
|
54
|
+
strategy:
|
55
|
+
matrix:
|
56
|
+
rack-version: ["270"]
|
57
|
+
steps:
|
58
|
+
- name: Install dependencies
|
59
|
+
run: |
|
60
|
+
sudo apt update -qq
|
61
|
+
sudo apt install --no-install-recommends -qqyf python3-dev \
|
62
|
+
libpcre3-dev libjansson-dev libcap2-dev ruby2.7-dev \
|
63
|
+
curl check
|
64
|
+
- uses: actions/checkout@v2
|
65
|
+
- name: Run unit tests
|
66
|
+
run: make tests
|
67
|
+
- name: Build uWSGI binary
|
68
|
+
run: make
|
69
|
+
- name: Build rack plugin
|
70
|
+
run: |
|
71
|
+
ruby -v
|
72
|
+
UWSGICONFIG_RUBYPATH=ruby /usr/bin/python uwsgiconfig.py --plugin plugins/rack base rack${{ matrix.rack-version }}
|
73
|
+
- name: run smoke tests
|
74
|
+
run: |
|
75
|
+
./tests/gh-rack.sh rack${{ matrix.rack-version}}
|
uwsgi-2.0.22/README
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
The uWSGI project
|
2
|
+
|
3
|
+
For official documentation check: https://uwsgi-docs.readthedocs.io/en/latest/
|
4
|
+
|
5
|
+
Note: The project is in maintenance mode (only bugfixes and updates for new languages apis)
|
6
|
+
|
7
|
+
uWSGI development has been sponsored by:
|
8
|
+
|
9
|
+
http://unbit.com
|
10
|
+
https://www.pythonanywhere.com/
|
11
|
+
https://lincolnloop.com/
|
12
|
+
https://yourlabs.io/oss
|
13
|
+
https://fili.com
|
@@ -315,18 +315,16 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_
|
|
315
315
|
apr_bucket_brigade *pass_bb = apr_brigade_create(r->pool, c->bucket_alloc);
|
316
316
|
|
317
317
|
len = ap_getline(buffer, sizeof(buffer), rp, 1);
|
318
|
-
|
319
318
|
if (len <= 0) {
|
320
|
-
|
319
|
+
/* invalid or empty */
|
321
320
|
return HTTP_INTERNAL_SERVER_ERROR;
|
322
321
|
}
|
323
|
-
|
324
322
|
backend->worker->s->read += len;
|
325
|
-
|
326
|
-
|
327
|
-
// oops
|
323
|
+
if ((apr_size_t)len >= sizeof(buffer)) {
|
324
|
+
/* too long */
|
328
325
|
return HTTP_INTERNAL_SERVER_ERROR;
|
329
326
|
}
|
327
|
+
|
330
328
|
/* Position of http status code */
|
331
329
|
int status_start;
|
332
330
|
if (apr_date_checkmask(buffer, "HTTP/#.# ###*")) {
|
@@ -334,8 +332,8 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_
|
|
334
332
|
} else if (apr_date_checkmask(buffer, "HTTP/# ###*")) {
|
335
333
|
status_start = 7;
|
336
334
|
} else {
|
337
|
-
|
338
|
-
|
335
|
+
/* not HTTP */
|
336
|
+
return HTTP_BAD_GATEWAY;
|
339
337
|
}
|
340
338
|
int status_end = status_start + 3;
|
341
339
|
|
@@ -354,17 +352,41 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_
|
|
354
352
|
}
|
355
353
|
r->status_line = apr_pstrdup(r->pool, &buffer[status_start]);
|
356
354
|
|
357
|
-
|
355
|
+
/* parse headers */
|
358
356
|
while ((len = ap_getline(buffer, sizeof(buffer), rp, 1)) > 0) {
|
357
|
+
if ((apr_size_t)len >= sizeof(buffer)) {
|
358
|
+
/* too long */
|
359
|
+
len = -1;
|
360
|
+
break;
|
361
|
+
}
|
359
362
|
value = strchr(buffer, ':');
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
363
|
+
if (!value) {
|
364
|
+
/* invalid header */
|
365
|
+
len = -1;
|
366
|
+
break;
|
367
|
+
}
|
368
|
+
*value++ = '\0';
|
369
|
+
if (*ap_scan_http_token(buffer)) {
|
370
|
+
/* invalid name */
|
371
|
+
len = -1;
|
372
|
+
break;
|
373
|
+
}
|
364
374
|
while (apr_isspace(*value)) ++value;
|
365
375
|
for (end = &value[strlen(value)-1]; end > value && apr_isspace(*end); --end) *end = '\0';
|
376
|
+
if (*ap_scan_http_field_content(value)) {
|
377
|
+
/* invalid value */
|
378
|
+
len = -1;
|
379
|
+
break;
|
380
|
+
}
|
366
381
|
apr_table_add(r->headers_out, buffer, value);
|
367
382
|
}
|
383
|
+
if (len < 0) {
|
384
|
+
/* Reset headers, but not to NULL because things below the chain expect
|
385
|
+
* this to be non NULL e.g. the ap_content_length_filter.
|
386
|
+
*/
|
387
|
+
r->headers_out = apr_table_make(r->pool, 1);
|
388
|
+
return HTTP_BAD_GATEWAY;
|
389
|
+
}
|
368
390
|
|
369
391
|
if ((buf = apr_table_get(r->headers_out, "Content-Type"))) {
|
370
392
|
ap_set_content_type(r, apr_pstrdup(r->pool, buf));
|
@@ -0,0 +1,3 @@
|
|
1
|
+
[uwsgi]
|
2
|
+
main_plugin = psgi,rack,lua,python,gevent,php,cgi,pty,xslt,msgpack,geoip,pam,ldap,mono,jvm,ring,jwsgi,servlet,pypy,airbrake,alarm_curl,asyncio,cheaper_backlog2,clock_monotonic,clock_realtime,cplusplus,curl_cron,dumbloop,dummy,echo,emperor_amqp,emperor_pg,emperor_zeromq,example,exception_log,fiber,forkptyrouter,graylog2,legion_cache_fetch,libffi,logcrypto,logpipe,logzmq,matheval,notfound,rbthreads,router_access,router_radius,router_spnego,router_xmldir,sqlite3,ssi,stats_pusher_file,stats_pusher_statsd,tornado,transformation_toupper,tuntap,webdav,xattr,zabbix
|
3
|
+
inherit = base
|
@@ -180,22 +180,57 @@ done:
|
|
180
180
|
|
181
181
|
}
|
182
182
|
|
183
|
+
int uwsgi_master_check_harakiri(int w, int c, int harakiri) {
|
184
|
+
/**
|
185
|
+
* Triggers a harakiri when the following conditions are met:
|
186
|
+
* - harakiri timeout > current time
|
187
|
+
* - listen queue pressure (ie backlog > harakiri_queue_threshold)
|
188
|
+
*
|
189
|
+
* The first harakiri attempt on a worker will be graceful if harakiri_graceful_timeout > 0,
|
190
|
+
* then the worker has harakiri_graceful_timeout seconds to shutdown cleanly, otherwise
|
191
|
+
* a second harakiri will trigger a SIGKILL
|
192
|
+
*
|
193
|
+
*/
|
194
|
+
#ifdef __linux__
|
195
|
+
int backlog = uwsgi.shared->backlog;
|
196
|
+
#else
|
197
|
+
int backlog = 0;
|
198
|
+
#endif
|
199
|
+
if (harakiri == 0 || harakiri > (time_t) uwsgi.current_time) {
|
200
|
+
return 0;
|
201
|
+
}
|
202
|
+
// no pending harakiri for the worker and no backlog pressure, safe to skip
|
203
|
+
if (uwsgi.workers[w].pending_harakiri == 0 && backlog < uwsgi.harakiri_queue_threshold) {
|
204
|
+
uwsgi_log_verbose("HARAKIRI: Skipping harakiri on worker %d. Listen queue is smaller than the threshold (%d < %d)\n",
|
205
|
+
w, backlog, uwsgi.harakiri_queue_threshold);
|
206
|
+
return 0;
|
207
|
+
}
|
208
|
+
|
209
|
+
trigger_harakiri(w);
|
210
|
+
if (uwsgi.harakiri_graceful_timeout > 0) {
|
211
|
+
uwsgi.workers[w].harakiri = harakiri + uwsgi.harakiri_graceful_timeout;
|
212
|
+
uwsgi_log_verbose("HARAKIRI: graceful termination attempt on worker %d with signal %d. Next harakiri: %d\n",
|
213
|
+
w, uwsgi.harakiri_graceful_signal, uwsgi.workers[w].harakiri);
|
214
|
+
}
|
215
|
+
return 1;
|
216
|
+
}
|
217
|
+
|
183
218
|
int uwsgi_master_check_workers_deadline() {
|
184
|
-
int i;
|
219
|
+
int i,j;
|
185
220
|
int ret = 0;
|
186
221
|
for (i = 1; i <= uwsgi.numproc; i++) {
|
187
|
-
|
188
|
-
|
189
|
-
if (uwsgi.workers[i].harakiri
|
190
|
-
|
222
|
+
for(j=0;j<uwsgi.cores;j++) {
|
223
|
+
/* first check for harakiri */
|
224
|
+
if (uwsgi_master_check_harakiri(i, j, uwsgi.workers[i].harakiri)) {
|
225
|
+
uwsgi_log_verbose("HARAKIRI triggered by worker %d core %d !!!\n", i, j);
|
191
226
|
ret = 1;
|
227
|
+
break;
|
192
228
|
}
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
if (uwsgi.workers[i].user_harakiri < (time_t) uwsgi.current_time) {
|
197
|
-
trigger_harakiri(i);
|
229
|
+
/* then user-defined harakiri */
|
230
|
+
if (uwsgi_master_check_harakiri(i, j, uwsgi.workers[i].user_harakiri)) {
|
231
|
+
uwsgi_log_verbose("HARAKIRI (user) triggered by worker %d core %d !!!\n", i, j);
|
198
232
|
ret = 1;
|
233
|
+
break;
|
199
234
|
}
|
200
235
|
}
|
201
236
|
// then for evil memory checkers
|
@@ -692,9 +692,22 @@ int uwsgi_respawn_worker(int wid) {
|
|
692
692
|
pthread_mutex_lock(&uwsgi.threaded_logger_lock);
|
693
693
|
}
|
694
694
|
|
695
|
+
|
696
|
+
for (i = 0; i < 256; i++) {
|
697
|
+
if (uwsgi.p[i]->pre_uwsgi_fork) {
|
698
|
+
uwsgi.p[i]->pre_uwsgi_fork();
|
699
|
+
}
|
700
|
+
}
|
701
|
+
|
695
702
|
pid_t pid = uwsgi_fork(uwsgi.workers[wid].name);
|
696
703
|
|
697
704
|
if (pid == 0) {
|
705
|
+
for (i = 0; i < 256; i++) {
|
706
|
+
if (uwsgi.p[i]->post_uwsgi_fork) {
|
707
|
+
uwsgi.p[i]->post_uwsgi_fork(1);
|
708
|
+
}
|
709
|
+
}
|
710
|
+
|
698
711
|
signal(SIGWINCH, worker_wakeup);
|
699
712
|
signal(SIGTSTP, worker_wakeup);
|
700
713
|
uwsgi.mywid = wid;
|
@@ -753,6 +766,12 @@ int uwsgi_respawn_worker(int wid) {
|
|
753
766
|
uwsgi_error("fork()");
|
754
767
|
}
|
755
768
|
else {
|
769
|
+
for (i = 0; i < 256; i++) {
|
770
|
+
if (uwsgi.p[i]->post_uwsgi_fork) {
|
771
|
+
uwsgi.p[i]->post_uwsgi_fork(0);
|
772
|
+
}
|
773
|
+
}
|
774
|
+
|
756
775
|
// the pid is set only in the master, as the worker should never use it
|
757
776
|
uwsgi.workers[wid].pid = pid;
|
758
777
|
|
@@ -1542,7 +1561,10 @@ void uwsgi_register_cheaper_algo(char *name, int (*func) (int)) {
|
|
1542
1561
|
|
1543
1562
|
void trigger_harakiri(int i) {
|
1544
1563
|
int j;
|
1545
|
-
uwsgi_log_verbose("*** HARAKIRI ON WORKER %d (pid: %d, try: %d) ***\n", i,
|
1564
|
+
uwsgi_log_verbose("*** HARAKIRI ON WORKER %d (pid: %d, try: %d, graceful: %s) ***\n", i,
|
1565
|
+
uwsgi.workers[i].pid,
|
1566
|
+
uwsgi.workers[i].pending_harakiri + 1,
|
1567
|
+
uwsgi.workers[i].pending_harakiri > 0 ? "no": "yes");
|
1546
1568
|
if (uwsgi.harakiri_verbose) {
|
1547
1569
|
#ifdef __linux__
|
1548
1570
|
int proc_file;
|
@@ -1591,7 +1613,11 @@ void trigger_harakiri(int i) {
|
|
1591
1613
|
}
|
1592
1614
|
|
1593
1615
|
uwsgi_dump_worker(i, "HARAKIRI");
|
1594
|
-
|
1616
|
+
if (uwsgi.workers[i].pending_harakiri == 0 && uwsgi.harakiri_graceful_timeout > 0) {
|
1617
|
+
kill(uwsgi.workers[i].pid, uwsgi.harakiri_graceful_signal);
|
1618
|
+
} else {
|
1619
|
+
kill(uwsgi.workers[i].pid, SIGKILL);
|
1620
|
+
}
|
1595
1621
|
if (!uwsgi.workers[i].pending_harakiri)
|
1596
1622
|
uwsgi.workers[i].harakiri_count++;
|
1597
1623
|
uwsgi.workers[i].pending_harakiri++;
|
@@ -703,16 +703,16 @@ int64_t uwsgi_metric_getn(char *name, size_t nlen, char *oid, size_t olen) {
|
|
703
703
|
|
704
704
|
int uwsgi_metric_set_max(char *name, char *oid, int64_t value) {
|
705
705
|
um_op;
|
706
|
-
|
707
|
-
|
706
|
+
if (value > *um->value)
|
707
|
+
*um->value = value;
|
708
708
|
uwsgi_rwunlock(uwsgi.metrics_lock);
|
709
709
|
return 0;
|
710
710
|
}
|
711
711
|
|
712
712
|
int uwsgi_metric_set_min(char *name, char *oid, int64_t value) {
|
713
713
|
um_op;
|
714
|
-
|
715
|
-
|
714
|
+
if ((value > um->initial_value || 0) && value < *um->value)
|
715
|
+
*um->value = value;
|
716
716
|
uwsgi_rwunlock(uwsgi.metrics_lock);
|
717
717
|
return 0;
|
718
718
|
}
|
@@ -106,6 +106,7 @@ uint64_t uwsgi_mount_flag(char *mflag) {
|
|
106
106
|
}
|
107
107
|
|
108
108
|
int uwsgi_mount(char *fs, char *what, char *where, char *flags, char *data) {
|
109
|
+
#if defined(__linux__) || defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
109
110
|
#if defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
110
111
|
struct iovec iov[6];
|
111
112
|
#endif
|
@@ -142,11 +143,13 @@ parsed:
|
|
142
143
|
iov[5].iov_len = strlen(what) + 1;
|
143
144
|
|
144
145
|
return nmount(iov, 6, (int) mountflags);
|
146
|
+
#endif
|
145
147
|
#endif
|
146
148
|
return -1;
|
147
149
|
}
|
148
150
|
|
149
151
|
int uwsgi_umount(char *where, char *flags) {
|
152
|
+
#if defined(__linux__) || defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
150
153
|
unsigned long mountflags = 0;
|
151
154
|
if (!flags) goto parsed;
|
152
155
|
char *mflags = uwsgi_str(flags);
|
@@ -195,6 +198,7 @@ unmountable:
|
|
195
198
|
return umount2(where, mountflags);
|
196
199
|
#elif defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
197
200
|
return unmount(where, mountflags);
|
201
|
+
#endif
|
198
202
|
#endif
|
199
203
|
return -1;
|
200
204
|
}
|
@@ -3671,6 +3671,7 @@ char *uwsgi_expand_path(char *dir, int dir_len, char *ptr) {
|
|
3671
3671
|
|
3672
3672
|
|
3673
3673
|
void uwsgi_set_cpu_affinity() {
|
3674
|
+
#if defined(__linux__) || defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
3674
3675
|
char buf[4096];
|
3675
3676
|
int ret;
|
3676
3677
|
int pos = 0;
|
@@ -3690,7 +3691,6 @@ void uwsgi_set_cpu_affinity() {
|
|
3690
3691
|
#elif defined(__FreeBSD__)
|
3691
3692
|
cpuset_t cpuset;
|
3692
3693
|
#endif
|
3693
|
-
#if defined(__linux__) || defined(__FreeBSD__) || defined(__GNU_kFreeBSD__)
|
3694
3694
|
CPU_ZERO(&cpuset);
|
3695
3695
|
int i;
|
3696
3696
|
for (i = 0; i < uwsgi.cpu_affinity; i++) {
|
@@ -3705,7 +3705,6 @@ void uwsgi_set_cpu_affinity() {
|
|
3705
3705
|
pos += ret;
|
3706
3706
|
base_cpu++;
|
3707
3707
|
}
|
3708
|
-
#endif
|
3709
3708
|
#if defined(__linux__) || defined(__GNU_kFreeBSD__)
|
3710
3709
|
if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
|
3711
3710
|
uwsgi_error("sched_setaffinity()");
|
@@ -3717,7 +3716,7 @@ void uwsgi_set_cpu_affinity() {
|
|
3717
3716
|
#endif
|
3718
3717
|
uwsgi_log("%s\n", buf);
|
3719
3718
|
}
|
3720
|
-
|
3719
|
+
#endif
|
3721
3720
|
}
|
3722
3721
|
|
3723
3722
|
#ifdef UWSGI_ELF
|
@@ -81,6 +81,9 @@ static struct uwsgi_option uwsgi_base_options[] = {
|
|
81
81
|
{"thunder-lock", no_argument, 0, "serialize accept() usage (if possible)", uwsgi_opt_true, &uwsgi.use_thunder_lock, 0},
|
82
82
|
{"harakiri", required_argument, 't', "set harakiri timeout", uwsgi_opt_set_int, &uwsgi.harakiri_options.workers, 0},
|
83
83
|
{"harakiri-verbose", no_argument, 0, "enable verbose mode for harakiri", uwsgi_opt_true, &uwsgi.harakiri_verbose, 0},
|
84
|
+
{"harakiri-graceful-timeout", required_argument, 0, "interval between graceful harakiri attempt and a sigkill", uwsgi_opt_set_int, &uwsgi.harakiri_graceful_timeout, 0},
|
85
|
+
{"harakiri-graceful-signal", required_argument, 0, "use this signal instead of sigterm for graceful harakiri attempts", uwsgi_opt_set_int, &uwsgi.harakiri_graceful_signal, 0},
|
86
|
+
{"harakiri-queue-threshold", required_argument, 0, "only trigger harakiri if queue is greater than this threshold", uwsgi_opt_set_int, &uwsgi.harakiri_queue_threshold, 0},
|
84
87
|
{"harakiri-no-arh", no_argument, 0, "do not enable harakiri during after-request-hook", uwsgi_opt_true, &uwsgi.harakiri_no_arh, 0},
|
85
88
|
{"no-harakiri-arh", no_argument, 0, "do not enable harakiri during after-request-hook", uwsgi_opt_true, &uwsgi.harakiri_no_arh, 0},
|
86
89
|
{"no-harakiri-after-req-hook", no_argument, 0, "do not enable harakiri during after-request-hook", uwsgi_opt_true, &uwsgi.harakiri_no_arh, 0},
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import os
|
2
|
-
|
2
|
+
import subprocess
|
3
|
+
|
4
|
+
NAME = 'gccgo'
|
3
5
|
|
4
6
|
CFLAGS = ['-g']
|
5
7
|
LDFLAGS = []
|
@@ -8,6 +10,6 @@ GCC_LIST = ['gccgo_plugin', 'uwsgi.go']
|
|
8
10
|
|
9
11
|
def post_build(config):
|
10
12
|
if os.path.exists('plugins/gccgo/uwsgi.go.o'):
|
11
|
-
if
|
13
|
+
if subprocess.call("objcopy -j .go_export plugins/gccgo/uwsgi.go.o plugins/gccgo/uwsgi.gox", shell=True) != 0:
|
12
14
|
os._exit(1)
|
13
15
|
print("*** uwsgi.gox available in %s/plugins/gccgo ***" % os.getcwd())
|
@@ -4,7 +4,7 @@ int uwsgi_gevent_wait_write_hook(int, int);
|
|
4
4
|
int uwsgi_gevent_wait_read_hook(int, int);
|
5
5
|
int uwsgi_gevent_wait_milliseconds_hook(int);
|
6
6
|
|
7
|
-
#define GEVENT_SWITCH PyObject *gswitch = python_call(ugevent.greenlet_switch, ugevent.greenlet_switch_args, 0, NULL); Py_DECREF(gswitch)
|
7
|
+
#define GEVENT_SWITCH PyObject *gswitch = python_call(ugevent.greenlet_switch, ugevent.greenlet_switch_args, 0, NULL); if (gswitch) { Py_DECREF(gswitch); }
|
8
8
|
#define GET_CURRENT_GREENLET python_call(ugevent.get_current, ugevent.get_current_args, 0, NULL)
|
9
9
|
#define free_req_queue uwsgi.async_queue_unused_ptr++; uwsgi.async_queue_unused[uwsgi.async_queue_unused_ptr] = wsgi_req
|
10
10
|
#define stop_the_watchers if (timer) { ret = PyObject_CallMethod(timer, "stop", NULL);\
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import os
|
2
2
|
import shutil
|
3
|
+
import subprocess
|
3
4
|
|
4
5
|
NAME='jvm'
|
5
6
|
|
@@ -31,17 +32,20 @@ elif operating_system.startswith('cygwin'):
|
|
31
32
|
JVM_INCPATH = ['-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include"', '-I"/cygdrive/c/Program Files/Java/jdk1.7.0_17/include/win32"']
|
32
33
|
JVM_LIBPATH = ['-L"/cygdrive/c/Program Files/Java/jdk1.7.0_17/jre/bin/server"']
|
33
34
|
else:
|
34
|
-
known_jvms = ('/usr/lib/jvm/java-7-openjdk', '/usr/local/openjdk7', '/usr/lib/jvm/java-6-openjdk', '/usr/local/openjdk', '/usr/java', '/usr/lib/jvm/java/', '/usr/lib/jvm/java-8-openjdk-%s' % arch)
|
35
|
+
known_jvms = ('/usr/lib/jvm/java-7-openjdk', '/usr/local/openjdk7', '/usr/lib/jvm/java-6-openjdk', '/usr/local/openjdk', '/usr/java', '/usr/lib/jvm/java/', '/usr/lib/jvm/java-8-openjdk-%s' % arch, '/usr/lib/jvm/java-11-openjdk-%s' % arch)
|
35
36
|
for jvm in known_jvms:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
37
|
+
if os.path.exists(jvm + '/include'):
|
38
|
+
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
|
39
|
+
if os.path.exists("%s/jre"):
|
40
|
+
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
|
41
|
+
else:
|
42
|
+
JVM_LIBPATH = ["-L%s/lib/server" % (jvm,)]
|
43
|
+
break
|
44
|
+
if os.path.exists("%s-%s/include" % (jvm, arch)):
|
45
|
+
jvm = "%s-%s" % (jvm, arch)
|
46
|
+
JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
|
47
|
+
JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
|
48
|
+
break
|
45
49
|
|
46
50
|
try:
|
47
51
|
JVM_INCPATH = ['-I"' + os.environ['UWSGICONFIG_JVM_INCPATH'] + '"']
|
@@ -71,9 +75,9 @@ else:
|
|
71
75
|
os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:]
|
72
76
|
|
73
77
|
def post_build(config):
|
74
|
-
if
|
78
|
+
if subprocess.call("javac %s/plugins/jvm/uwsgi.java" % os.getcwd(), shell=True) != 0:
|
75
79
|
os._exit(1)
|
76
|
-
if
|
80
|
+
if subprocess.call("cd %s/plugins/jvm ; jar cvf uwsgi.jar *.class" % os.getcwd(), shell=True) != 0:
|
77
81
|
os._exit(1)
|
78
82
|
print("*** uwsgi.jar available in %s/plugins/jvm/uwsgi.jar ***" % os.getcwd())
|
79
83
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import os
|
2
|
-
|
2
|
+
import subprocess
|
3
|
+
|
4
|
+
NAME = 'mono'
|
3
5
|
|
4
6
|
CFLAGS = os.popen('pkg-config --cflags mono-2').read().rstrip().split()
|
5
7
|
LDFLAGS = []
|
@@ -7,11 +9,11 @@ LIBS = os.popen('pkg-config --libs mono-2').read().rstrip().split()
|
|
7
9
|
GCC_LIST = ['mono_plugin']
|
8
10
|
|
9
11
|
if os.uname()[0] == 'Darwin':
|
10
|
-
|
12
|
+
LIBS.append('-framework Foundation')
|
11
13
|
|
12
14
|
def post_build(config):
|
13
|
-
if
|
15
|
+
if subprocess.call("sn -k plugins/mono/uwsgi.key", shell=True) != 0:
|
14
16
|
os._exit(1)
|
15
|
-
if
|
17
|
+
if subprocess.call("mcs /target:library /r:System.Web.dll /keyfile:plugins/mono/uwsgi.key plugins/mono/uwsgi.cs", shell=True) != 0:
|
16
18
|
os._exit(1)
|
17
19
|
print("*** uwsgi.dll available in %s/plugins/mono/uwsgi.dll ***" % os.getcwd())
|