uWSGI 2.0.24__tar.gz → 2.0.25.1__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.24 → uwsgi-2.0.25.1}/.github/workflows/compile-test.yml +6 -6
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/.github/workflows/test.yml +1 -1
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/PKG-INFO +1 -1
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/alarm.c +6 -5
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/config.c +1 -1
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/logging.c +7 -7
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/loop.c +3 -3
- uwsgi-2.0.25.1/core/regexp.c +178 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/routing.c +25 -16
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/ssl.c +4 -4
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/static.c +10 -10
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/utils.c +6 -28
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/uwsgi.c +33 -60
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/glusterfs/glusterfs.c +1 -1
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/php/php_plugin.c +8 -4
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/python_plugin.c +3 -1
- uwsgi-2.0.25.1/tests/threads_atexit.py +44 -0
- uwsgi-2.0.25.1/tests/threads_heavy.py +29 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgi.gemspec +1 -1
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgi.h +36 -23
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgiconfig.py +26 -26
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/valgrind/valgrind-generate-sups.sh +4 -2
- uwsgi-2.0.24/core/regexp.c +0 -110
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/.gitignore +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/CONTRIBUTORS +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/INSTALL +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/LICENSE +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/Makefile +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/README +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/apache2/mod_Ruwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/apache2/mod_proxy_uwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/apache2/mod_uwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/attach.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/bin/uwsgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/all.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/asyncio.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/base.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/cgi.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/core.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/coroae.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/coverity.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/default.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/django.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/embedded.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/erlang.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/gccgo.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/gevent.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/glusterfs.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/gridfs.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/jwsgi.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/lib.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/lua.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/luap.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/minimal.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/modular.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/mono.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/nolang.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/package.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/php.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/plonly.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/ppa.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/psgi.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pyerl.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pylua.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pyonly.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pypy.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pypyonly.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pyring.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pyuwsgi.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/pyuwsginossl.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/rack.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/rados.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/rbonly.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/ring.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/ruby2.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/servlet.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/travis.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/unbit.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/unbitstaff.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/uwsgi.it.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/buildconf/v8.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/Uwsgi.pm +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/binder.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/centos_init_script +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/cgi_python.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/cryptologger.rb +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/emperormon.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/fdconf.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/graphite_uwsgi.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/loadapp.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/pypy/uwsgi_pypy_greenlets.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/pyuwsgi.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/runuwsgi.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/securesubscribe.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/spoolqueue/producer.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/spoolqueue/tasks.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/spoolqueue/tasksconsumer.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/subscribe.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/twuwsgi.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/upstart/emperor.conf +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/upstart/uwsgi.conf +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/upython +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/urack.rb +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi-cache-monitor.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi.erl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi.java +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi.rb +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi_client.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgi_dynamic_client.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/uwsgisubscribers.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/contrib/xinetd_uwsgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/async.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/buffer.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/cache.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/chunked.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/clang_fake.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/clock.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/cookie.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/cron.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/daemons.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/emperor.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/errors.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/event.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/exceptions.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/fifo.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/fsmon.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/gateway.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/hash.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/hooks.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/ini.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/init.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/io.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/json.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/legion.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/lock.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/logging. +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/master.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/master_checks.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/master_events.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/master_utils.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/metrics.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/mount.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/mule.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/notify.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/offload.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/plugins.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/plugins_builder.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/progress.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/protocol.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/querystring.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/queue.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/rb_timers.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/reader.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/rpc.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/sendfile.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/setup_utils.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/sharedarea.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/signal.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/skel.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/snmp.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/socket.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/spooler.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/stats.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/storage.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/strings.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/subscription.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/timebomb.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/transformations.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/websockets.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/writer.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/xmlconf.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/yaml.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/zeus.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/core/zlib.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/bootstrap.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/bootstrap2.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/bootstrap3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/bootstrap4.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/bootstrap5.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config17.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config2.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config2.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/config30.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/corostream.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/debug.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/fibers.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/fibers.yml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/flaskpost.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/heavytest.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/heavytest.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/info_uwsgi.php +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/logic.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/mega.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/mjpeg_stream.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/mojoapp.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/multi.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/multi.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/multiapp.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/protected.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/router.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/simple_app.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/simple_app_wsgi2.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/simple_logger.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/sites.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/sputnik.ws +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/staticfilesnmp.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/taskqueue.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgi.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgirouter.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgirouter2.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgirouter3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgirouter4.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgirouter5.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/uwsgistatus.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/welcome.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/welcome.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/welcome3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/werkzeug.js +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/werkzeug.yml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/werkzeug_strict.yml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/xmlindex-html.xsl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/xmlindex.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/examples/zmqgevent.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/ext/uwsgi/extconf.rb +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/install.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/lib/linux_ns.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/lib/netlink.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/lib/sun_fixes.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/logo_uWSGI.png +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/logo_uWSGI.svg +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/mongrel2-uwsgi.conf +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/airbrake/airbrake_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/airbrake/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_curl/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_speech/alarm_speech.m +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_speech/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_xmpp/gloox.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/asyncio/asyncio.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/asyncio/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cache/cache.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/carbon/carbon.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/carbon/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cgi/cgi_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/clock_monotonic/clock_monotonic.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/clock_realtime/clock_realtime.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/clock_realtime/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/corerouter/corerouter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/corerouter/cr.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/corerouter/cr_common.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/corerouter/cr_map.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/corerouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/coroae/coroae.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/coroae/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cplusplus/base.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cplusplus/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/cplusplus/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/curl_cron/curl_cron.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/curl_cron/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/dumbloop/dumb.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/dumbloop/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/dummy/dummy.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/dummy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/echo/echo_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/echo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_amqp/amqp.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_amqp/emperor_amqp.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_mongodb/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_pg/emperor_pg.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_pg/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/example/example_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/example/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/exception_log/exception_log.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/exception_log/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/fastrouter/fastrouter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/fastrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/fiber/fiber.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/fiber/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/forkptyrouter/forkptyrouter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gccgo/gccgo_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gccgo/uwsgi.go +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gccgo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/geoip/geoip.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/geoip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gevent/gevent.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gevent/gevent.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gevent/hooks.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gevent/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/glusterfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/graylog2/graylog2_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/graylog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/greenlet/greenlet.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/greenlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gridfs/gridfs.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gridfs/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/gridfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/common.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/http.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/https.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/keepalive.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/spdy3.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/spdy3.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jvm/jvm.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jvm/jvm_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jvm/uwsgi.java +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jvm/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jwsgi/jwsgi_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/jwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ldap/ldap.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ldap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/libffi/libffi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/libffi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/libtcc/libtcc.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/libtcc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logcrypto/logcrypto.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logcrypto/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logfile/logfile.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logfile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logpipe/logpipe.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logpipe/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logsocket/logsocket_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logsocket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logzmq/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/logzmq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/lua/lua_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/lua/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/matheval/math.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/matheval/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongodb/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongodblog/mongodblog_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongodblog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongrel2/mongrel2.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mongrel2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mono/mono_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mono/uwsgi.cs +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/mono/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/msgpack/msgpack.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/msgpack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/nagios/nagios.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/nagios/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/notfound/notfound.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/notfound/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/objc_gc/objc_gc.m +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/objc_gc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pam/pam.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pam/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/php/common.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/php/session.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/php/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ping/ping_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ping/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/psgi.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/psgi_loader.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/psgi_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/psgi_response.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/uwsgi_plmodule.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/psgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pty/pty.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pty/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pypy/README +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pypy/pypy_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pypy/pypy_setup.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pypy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/gil.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/profiler.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/pump_subhandler.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/pyloader.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/pyutils.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/raw.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/symimporter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/tracebacker.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/uwsgi_pymodule.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/uwsgi_python.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/web3_subhandler.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/wsgi_handlers.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/wsgi_headers.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/python/wsgi_subhandler.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pyuwsgi/pyuwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rack/rack_api.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rack/rack_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rack/uwsgi_rack.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rados/rados.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rados/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rawrouter/rawrouter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rawrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rbthreads/rbthreads.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rbthreads/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/redislog/redislog_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/redislog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ring/ring_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ring/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_access/router_access.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_access/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_basicauth/router_basicauth.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_basicauth/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_cache/router_cache.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_expires/expires.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_expires/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_hash/router_hash.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_hash/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_http/router_http.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_memcached/router_memcached.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_memcached/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_metrics/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_metrics/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_radius/radius.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_radius/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_redirect/router_redirect.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_redirect/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_redis/router_redis.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_redis/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_rewrite/router_rewrite.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_rewrite/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_spnego/router_spnego.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_spnego/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_static/router_static.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_static/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_uwsgi/router_uwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_xmldir/router_xmldir.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/router_xmldir/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rpc/rpc_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rpc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rrdtool/rrdtool.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rrdtool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rsyslog/rsyslog_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/rsyslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ruby19/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/servlet/servlet_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/servlet/uwsgi_servlet.java +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/servlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/signal/signal_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/signal/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/spooler/spooler_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/spooler/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/sqlite3/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/sqlite3/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ssi/ssi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ssi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/sslrouter/sslrouter.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/sslrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stackless/stackless.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stackless/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_file/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_mongodb/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_socket/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_statsd/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/symcall/symcall_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/symcall/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/syslog/syslog_plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/syslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/systemd_logger/systemd_logger.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/systemd_logger/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tornado/tornado.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tornado/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_chunked/chunked.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_gzip/gzip.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_offload/offload.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_offload/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_template/tt.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_template/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_tofile/tofile.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_toupper/toupper.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tuntap/common.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tuntap/common.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tuntap/firewall.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tuntap/tuntap.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/tuntap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ugreen/ugreen.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/ugreen/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/v8_commonjs.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/v8_jsgi.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/v8_uwsgi.cc +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/v8/v8_uwsgi.h +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/webdav/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/webdav/webdav.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/xattr/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/xattr/xattr.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/xslt/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/xslt/xslt.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/zabbix/plugin.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/zabbix/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/zergpool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/plugins/zergpool/zergpool.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/BUILD +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/base.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/fastcgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/http.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/puwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/scgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/proto/uwsgi.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/setup.cpyext.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/setup.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/setup.pyuwsgi.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/cachebitmap.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/cachebitmap.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/cachetest.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/clojure/myapp.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/core/apps/read_body_and_send.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/core/read_body_and_send.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/core/url_sanitize.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/go/cachetest.go +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/go/complextest.go +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/go/uploadtest.go +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/java/rpc.java +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/lua/basic.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/mono/cache.aspx +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/mules/mulebrain.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/mules/reload.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/mules/signal_management.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/active_workers_signal.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/apps/input_with_offset.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_benchmark.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_harakiri.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_hello.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_input_with_offset.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_post.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_sleepy.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/perl/test_streaming.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/pypy/t_continulet1.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/pypy/t_continulet2.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/forcecl.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/manage_script_name/manage_script_name_test.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/manage_script_name/test_manage_script_name.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/manage_script_name/useless_app.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/spooler_decorators/spooler_decorator_test.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/spooler_decorators/spooler_handlers.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/python/testba.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/README.md +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/config.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/project.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/src/uwsgi/ring/tests/body.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/routing/auth.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/routing/errorlimiter.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/routing/limiter.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/sharedarea/bigranges.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/sharedarea/bigranges.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/sharedarea/sharedarea_incdec.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/sharedarea/sharedarea_incdec.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/spooler/read.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/spooler/reload.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/spooler/spooldir/.gitignore +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/webdav/carddav.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/xslt/cd.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/xslt/cd.xml.xslt +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/t/xslt/routex.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/Responder.pm +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/__init__.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/badthread.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/badwrites.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/cpubound_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/cpubound_green.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/cpubound_stackless.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/main.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/master-nothreads.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/master-threads-10workers.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/master-threads-1worker.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/nomaster-threads-10workers.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/nomaster-threads-1worker.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/deadlocks/sitecustomize.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/decoratortest.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/fileserve_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/gevent_spool.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/gh-deadlocks.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/gh-python.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/gh-rack.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/gh-shared.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/grunter.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/harakiri.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/iobound_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/iobound_async_unix.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/iobound_green.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/logger.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/mako_ugreen.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/mulefunc.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/multiapp.txt +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/myadmin.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/pgbound_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/picazzo.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/psycogreen_green.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/psycopg2_green.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/pump.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/queue.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/refcount.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/rpc.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/rpc.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/runningthread.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sendchunked.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sharedarea.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sig.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/signals.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sigwait.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sleeping_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sleeping_green.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/sleepthreadasync.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/slow.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/spoolme.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/static/test.txt +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/static/test2.txt +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/staticfile.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/streamer.psgi +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/t/static.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/templates/queue.html +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testapp.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testfilewrapper.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testgevent.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testpy3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testrpc.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testsignals.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testworkers.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/testyieldnone.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/threads.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/travis.sh +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/ugevent.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/web3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_chat.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_chat.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_chat_async.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_chat_asyncio.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_echo.lua +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_echo.pl +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_echo.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/websockets_echo.ru +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/tests/werkzeug_app.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgi_main.c +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgidecorators.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/uwsgidsl.rb +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/valgrind/README +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vassals/broodlord.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vassals/cc.ini +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vassals/multi.xml +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/flask001/app1.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/flask002/app2.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/flask003/app3.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/flask004/app4.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/flask005/app5.py +0 -0
- {uwsgi-2.0.24 → uwsgi-2.0.25.1}/vhosttest/nginx.conf +0 -0
@@ -10,18 +10,18 @@ jobs:
|
|
10
10
|
build:
|
11
11
|
strategy:
|
12
12
|
matrix:
|
13
|
+
libpcre: ["libpcre3-dev", "libpcre2-dev"]
|
14
|
+
os: ["ubuntu-20.04", "ubuntu-22.04"]
|
15
|
+
cc: [gcc, clang]
|
13
16
|
include:
|
14
17
|
- os: ubuntu-20.04
|
15
18
|
php: "php7.4"
|
16
19
|
php-config: "php-config7.4"
|
17
|
-
cc: "gcc"
|
18
|
-
- os: ubuntu-22.04
|
19
|
-
php: "php8.1"
|
20
|
-
php-config: "php-config8.1"
|
21
|
-
cc: "gcc"
|
22
20
|
- os: ubuntu-22.04
|
23
21
|
php: "php8.1"
|
24
22
|
php-config: "php-config8.1"
|
23
|
+
exclude:
|
24
|
+
- os: ubuntu-20.04
|
25
25
|
cc: "clang"
|
26
26
|
|
27
27
|
runs-on: ${{ matrix.os }}
|
@@ -35,7 +35,7 @@ jobs:
|
|
35
35
|
run: |
|
36
36
|
sudo apt update -qq
|
37
37
|
sudo apt install --no-install-recommends -qqyf python3-dev \
|
38
|
-
libxml2-dev
|
38
|
+
libxml2-dev ${{ matrix.libpcre }} libcap2-dev \
|
39
39
|
libargon2-0-dev libsodium-dev \
|
40
40
|
${{ matrix.php }}-dev lib${{ matrix.php }}-embed \
|
41
41
|
liblua5.1-0-dev ruby-dev \
|
@@ -21,7 +21,7 @@ jobs:
|
|
21
21
|
run: |
|
22
22
|
sudo apt update -qq
|
23
23
|
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-dev \
|
24
|
-
|
24
|
+
libpcre2-dev libjansson-dev libcap2-dev \
|
25
25
|
curl check
|
26
26
|
- name: Install distutils
|
27
27
|
if: contains(fromJson('["3.6","3.7","3.8","3.9","3.10","3.11","3.12"]'), matrix.python-version)
|
@@ -160,7 +160,7 @@ static struct uwsgi_alarm_instance *uwsgi_alarm_get_instance(char *name) {
|
|
160
160
|
}
|
161
161
|
|
162
162
|
|
163
|
-
#
|
163
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
164
164
|
static int uwsgi_alarm_log_add(char *alarms, char *regexp, int negate) {
|
165
165
|
|
166
166
|
struct uwsgi_alarm_log *old_ual = NULL, *ual = uwsgi.alarm_logs;
|
@@ -170,7 +170,8 @@ static int uwsgi_alarm_log_add(char *alarms, char *regexp, int negate) {
|
|
170
170
|
}
|
171
171
|
|
172
172
|
ual = uwsgi_calloc(sizeof(struct uwsgi_alarm_log));
|
173
|
-
if (uwsgi_regexp_build(regexp, &ual->pattern
|
173
|
+
if (uwsgi_regexp_build(regexp, &ual->pattern)) {
|
174
|
+
free(ual);
|
174
175
|
return -1;
|
175
176
|
}
|
176
177
|
ual->negate = negate;
|
@@ -330,7 +331,7 @@ void uwsgi_alarms_init() {
|
|
330
331
|
usl = usl->next;
|
331
332
|
}
|
332
333
|
|
333
|
-
#
|
334
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
334
335
|
// then map log-alarm
|
335
336
|
usl = uwsgi.alarm_logs_list;
|
336
337
|
while (usl) {
|
@@ -376,14 +377,14 @@ void uwsgi_alarm_trigger_uai(struct uwsgi_alarm_instance *uai, char *msg, size_t
|
|
376
377
|
}
|
377
378
|
}
|
378
379
|
|
379
|
-
#
|
380
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
380
381
|
// check if a log should raise an alarm
|
381
382
|
void uwsgi_alarm_log_check(char *msg, size_t len) {
|
382
383
|
if (!uwsgi_strncmp(msg, len, "[uwsgi-alarm", 12))
|
383
384
|
return;
|
384
385
|
struct uwsgi_alarm_log *ual = uwsgi.alarm_logs;
|
385
386
|
while (ual) {
|
386
|
-
if (uwsgi_regexp_match(ual->pattern,
|
387
|
+
if (uwsgi_regexp_match(ual->pattern, msg, len) >= 0) {
|
387
388
|
if (!ual->negate) {
|
388
389
|
struct uwsgi_alarm_ll *uall = ual->alarms;
|
389
390
|
while (uall) {
|
@@ -314,7 +314,7 @@ int uwsgi_logic_opt_if_not_hostname(char *key, char *value) {
|
|
314
314
|
return 0;
|
315
315
|
}
|
316
316
|
|
317
|
-
#
|
317
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
318
318
|
int uwsgi_logic_opt_if_hostname_match(char *key, char *value) {
|
319
319
|
if (uwsgi_regexp_match_pattern(uwsgi.logic_opt_data, uwsgi.hostname)) {
|
320
320
|
add_exported_option(key, uwsgi_substitute(value, "%(_)", uwsgi.logic_opt_data), 0);
|
@@ -414,7 +414,7 @@ void uwsgi_setup_log_master(void) {
|
|
414
414
|
usl = usl->next;
|
415
415
|
}
|
416
416
|
|
417
|
-
#
|
417
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
418
418
|
// set logger by its id
|
419
419
|
struct uwsgi_regexp_list *url = uwsgi.log_route;
|
420
420
|
while (url) {
|
@@ -1398,11 +1398,11 @@ int uwsgi_master_log(void) {
|
|
1398
1398
|
|
1399
1399
|
ssize_t rlen = read(uwsgi.shared->worker_log_pipe[0], uwsgi.log_master_buf, uwsgi.log_master_bufsize);
|
1400
1400
|
if (rlen > 0) {
|
1401
|
-
#
|
1401
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
1402
1402
|
uwsgi_alarm_log_check(uwsgi.log_master_buf, rlen);
|
1403
1403
|
struct uwsgi_regexp_list *url = uwsgi.log_drain_rules;
|
1404
1404
|
while (url) {
|
1405
|
-
if (uwsgi_regexp_match(url->pattern,
|
1405
|
+
if (uwsgi_regexp_match(url->pattern, uwsgi.log_master_buf, rlen) >= 0) {
|
1406
1406
|
return 0;
|
1407
1407
|
}
|
1408
1408
|
url = url->next;
|
@@ -1411,7 +1411,7 @@ int uwsgi_master_log(void) {
|
|
1411
1411
|
int show = 0;
|
1412
1412
|
url = uwsgi.log_filter_rules;
|
1413
1413
|
while (url) {
|
1414
|
-
if (uwsgi_regexp_match(url->pattern,
|
1414
|
+
if (uwsgi_regexp_match(url->pattern, uwsgi.log_master_buf, rlen) >= 0) {
|
1415
1415
|
show = 1;
|
1416
1416
|
break;
|
1417
1417
|
}
|
@@ -1424,7 +1424,7 @@ int uwsgi_master_log(void) {
|
|
1424
1424
|
url = uwsgi.log_route;
|
1425
1425
|
int finish = 0;
|
1426
1426
|
while (url) {
|
1427
|
-
if (uwsgi_regexp_match(url->pattern,
|
1427
|
+
if (uwsgi_regexp_match(url->pattern, uwsgi.log_master_buf, rlen) >= 0) {
|
1428
1428
|
struct uwsgi_logger *ul_route = (struct uwsgi_logger *) url->custom_ptr;
|
1429
1429
|
if (ul_route) {
|
1430
1430
|
uwsgi_log_func_do(uwsgi.requested_log_encoders, ul_route, uwsgi.log_master_buf, rlen);
|
@@ -1464,11 +1464,11 @@ int uwsgi_master_req_log(void) {
|
|
1464
1464
|
|
1465
1465
|
ssize_t rlen = read(uwsgi.shared->worker_req_log_pipe[0], uwsgi.log_master_buf, uwsgi.log_master_bufsize);
|
1466
1466
|
if (rlen > 0) {
|
1467
|
-
#
|
1467
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
1468
1468
|
struct uwsgi_regexp_list *url = uwsgi.log_req_route;
|
1469
1469
|
int finish = 0;
|
1470
1470
|
while (url) {
|
1471
|
-
if (uwsgi_regexp_match(url->pattern,
|
1471
|
+
if (uwsgi_regexp_match(url->pattern, uwsgi.log_master_buf, rlen) >= 0) {
|
1472
1472
|
struct uwsgi_logger *ul_route = (struct uwsgi_logger *) url->custom_ptr;
|
1473
1473
|
if (ul_route) {
|
1474
1474
|
uwsgi_log_func_do(uwsgi.requested_log_req_encoders, ul_route, uwsgi.log_master_buf, rlen);
|
@@ -60,6 +60,9 @@ void *uwsgi_get_loop(char *name) {
|
|
60
60
|
|
61
61
|
void simple_loop() {
|
62
62
|
uwsgi_loop_cores_run(simple_loop_run);
|
63
|
+
// Other threads may still run. Make sure they will stop.
|
64
|
+
uwsgi.workers[uwsgi.mywid].manage_next_request = 0;
|
65
|
+
|
63
66
|
if (uwsgi.workers[uwsgi.mywid].shutdown_sockets)
|
64
67
|
uwsgi_shutdown_all_sockets();
|
65
68
|
}
|
@@ -78,9 +81,6 @@ void uwsgi_setup_thread_req(long core_id, struct wsgi_request *wsgi_req) {
|
|
78
81
|
int i;
|
79
82
|
sigset_t smask;
|
80
83
|
|
81
|
-
|
82
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &i);
|
83
|
-
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &i);
|
84
84
|
pthread_setspecific(uwsgi.tur_key, (void *) wsgi_req);
|
85
85
|
|
86
86
|
if (core_id > 0) {
|
@@ -0,0 +1,178 @@
|
|
1
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
2
|
+
#include "uwsgi.h"
|
3
|
+
|
4
|
+
extern struct uwsgi_server uwsgi;
|
5
|
+
|
6
|
+
void uwsgi_opt_pcre_jit(char *opt, char *value, void *foobar) {
|
7
|
+
#if defined(PCRE_STUDY_JIT_COMPILE) && defined(PCRE_CONFIG_JIT)
|
8
|
+
int has_jit = 0, ret;
|
9
|
+
ret = pcre_config(PCRE_CONFIG_JIT, &has_jit);
|
10
|
+
if (ret != 0 || has_jit != 1)
|
11
|
+
return;
|
12
|
+
uwsgi.pcre_jit = PCRE_STUDY_JIT_COMPILE;
|
13
|
+
#elif defined(PCRE2_CONFIG_JIT)
|
14
|
+
int has_jit = 0, ret;
|
15
|
+
ret = pcre2_config(PCRE2_CONFIG_JIT, &has_jit);
|
16
|
+
if (ret != 0)
|
17
|
+
return;
|
18
|
+
uwsgi.pcre_jit = has_jit;
|
19
|
+
#endif
|
20
|
+
}
|
21
|
+
|
22
|
+
int uwsgi_regexp_build(char *re, uwsgi_pcre ** pattern) {
|
23
|
+
|
24
|
+
#ifdef UWSGI_PCRE2
|
25
|
+
int errnbr;
|
26
|
+
long unsigned int erroff;
|
27
|
+
|
28
|
+
*pattern = pcre2_compile((const unsigned char *) re, PCRE2_ZERO_TERMINATED, 0, &errnbr, &erroff, NULL);
|
29
|
+
#else
|
30
|
+
const char *errstr;
|
31
|
+
int erroff;
|
32
|
+
|
33
|
+
*pattern = uwsgi_malloc(sizeof(uwsgi_pcre));
|
34
|
+
(*pattern)->p = pcre_compile((const char *) re, 0, &errstr, &erroff, NULL);
|
35
|
+
#endif
|
36
|
+
#ifdef UWSGI_PCRE2
|
37
|
+
if (!(*pattern)) {
|
38
|
+
uwsgi_log("pcre error: code %d at offset %d\n", errnbr, erroff);
|
39
|
+
#else
|
40
|
+
if (!((*pattern)->p)) {
|
41
|
+
uwsgi_log("pcre error: %s at offset %d\n", errstr, erroff);
|
42
|
+
#endif
|
43
|
+
return -1;
|
44
|
+
}
|
45
|
+
|
46
|
+
#ifdef UWSGI_PCRE2
|
47
|
+
if (uwsgi.pcre_jit) {
|
48
|
+
errnbr = pcre2_jit_compile(*pattern, PCRE2_JIT_COMPLETE);
|
49
|
+
if (errnbr) {
|
50
|
+
pcre2_code_free(*pattern);
|
51
|
+
uwsgi_log("pcre JIT compile error code %d\n", errnbr);
|
52
|
+
return -1;
|
53
|
+
}
|
54
|
+
#else
|
55
|
+
int opt = uwsgi.pcre_jit;
|
56
|
+
|
57
|
+
(*pattern)->extra = (pcre_extra *) pcre_study((const pcre *) (*pattern)->p, opt, &errstr);
|
58
|
+
if ((*pattern)->extra == NULL && errstr != NULL) {
|
59
|
+
pcre_free((*pattern)->p);
|
60
|
+
free(*pattern);
|
61
|
+
uwsgi_log("pcre (study) error: %s\n", errstr);
|
62
|
+
return -1;
|
63
|
+
#endif
|
64
|
+
}
|
65
|
+
|
66
|
+
return 0;
|
67
|
+
|
68
|
+
}
|
69
|
+
|
70
|
+
int uwsgi_regexp_match(uwsgi_pcre *pattern, const char *subject, int length) {
|
71
|
+
#ifdef UWSGI_PCRE2
|
72
|
+
return pcre2_match(pattern, (const unsigned char *)subject, length, 0, 0, NULL, NULL);
|
73
|
+
#else
|
74
|
+
return pcre_exec((const pcre *) pattern->p, (const pcre_extra *) pattern->extra, subject, length, 0, 0, NULL, 0);
|
75
|
+
#endif
|
76
|
+
}
|
77
|
+
|
78
|
+
int uwsgi_regexp_match_ovec(uwsgi_pcre *pattern, const char *subject, int length, int *ovec, int n) {
|
79
|
+
|
80
|
+
#ifdef UWSGI_PCRE2
|
81
|
+
int rc;
|
82
|
+
int i;
|
83
|
+
pcre2_match_data *match_data;
|
84
|
+
size_t *pcre2_ovec;
|
85
|
+
|
86
|
+
match_data = pcre2_match_data_create_from_pattern(pattern, NULL);
|
87
|
+
rc = pcre2_match(pattern, (const unsigned char *)subject, length, 0, 0, match_data, NULL);
|
88
|
+
|
89
|
+
/*
|
90
|
+
* Quoting PCRE{,2} spec, "The first pair of integers, ovector[0]
|
91
|
+
* and ovector[1], identify the portion of the subject string matched
|
92
|
+
* by the entire pattern. The next pair is used for the first capturing
|
93
|
+
* subpattern, and so on." Therefore, the ovector size is the number of
|
94
|
+
* capturing subpatterns (INFO_CAPTURECOUNT), from uwsgi_regexp_ovector(),
|
95
|
+
* as matching pairs, plus room for the first pair.
|
96
|
+
*/
|
97
|
+
if (n > 0) {
|
98
|
+
// copy pcre2 output vector to uwsgi output vector
|
99
|
+
pcre2_ovec = pcre2_get_ovector_pointer(match_data);
|
100
|
+
for (i=0;i<(n+1)*2;i++) {
|
101
|
+
ovec[i] = pcre2_ovec[i];
|
102
|
+
}
|
103
|
+
#else
|
104
|
+
if (n > 0) {
|
105
|
+
return pcre_exec((const pcre *) pattern->p, (const pcre_extra *) pattern->extra, subject, length, 0, 0, ovec, PCRE_OVECTOR_BYTESIZE(n));
|
106
|
+
#endif
|
107
|
+
}
|
108
|
+
|
109
|
+
#ifdef UWSGI_PCRE2
|
110
|
+
pcre2_match_data_free(match_data);
|
111
|
+
|
112
|
+
return rc;
|
113
|
+
#else
|
114
|
+
return pcre_exec((const pcre *) pattern->p, (const pcre_extra *) pattern->extra, subject, length, 0, 0, NULL, 0);
|
115
|
+
#endif
|
116
|
+
}
|
117
|
+
|
118
|
+
int uwsgi_regexp_ovector(const uwsgi_pcre *pattern) {
|
119
|
+
|
120
|
+
int n;
|
121
|
+
#ifdef UWSGI_PCRE2
|
122
|
+
if (pcre2_pattern_info(pattern, PCRE2_INFO_CAPTURECOUNT, &n))
|
123
|
+
#else
|
124
|
+
if (pcre_fullinfo((const pcre *) pattern->p, (const pcre_extra *) pattern->extra, PCRE_INFO_CAPTURECOUNT, &n))
|
125
|
+
#endif
|
126
|
+
return 0;
|
127
|
+
|
128
|
+
return n;
|
129
|
+
}
|
130
|
+
|
131
|
+
char *uwsgi_regexp_apply_ovec(char *src, int src_n, char *dst, int dst_n, int *ovector, int n) {
|
132
|
+
|
133
|
+
int i;
|
134
|
+
int dollar = 0;
|
135
|
+
|
136
|
+
size_t dollars = n;
|
137
|
+
|
138
|
+
for(i=0;i<dst_n;i++) {
|
139
|
+
if (dst[i] == '$') {
|
140
|
+
dollars++;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
char *res = uwsgi_malloc(dst_n + (src_n * dollars) + 1);
|
145
|
+
char *ptr = res;
|
146
|
+
|
147
|
+
for (i = 0; i < dst_n; i++) {
|
148
|
+
if (dollar) {
|
149
|
+
if (isdigit((int) dst[i])) {
|
150
|
+
int pos = (dst[i] - 48);
|
151
|
+
if (pos <= n) {
|
152
|
+
pos = pos * 2;
|
153
|
+
memcpy(ptr, src + ovector[pos], ovector[pos + 1] - ovector[pos]);
|
154
|
+
ptr += ovector[pos + 1] - ovector[pos];
|
155
|
+
}
|
156
|
+
}
|
157
|
+
else {
|
158
|
+
*ptr++ = '$';
|
159
|
+
*ptr++ = dst[i];
|
160
|
+
}
|
161
|
+
dollar = 0;
|
162
|
+
}
|
163
|
+
else {
|
164
|
+
if (dst[i] == '$') {
|
165
|
+
dollar = 1;
|
166
|
+
}
|
167
|
+
else {
|
168
|
+
*ptr++ = dst[i];
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
*ptr++ = 0;
|
174
|
+
|
175
|
+
return res;
|
176
|
+
}
|
177
|
+
|
178
|
+
#endif
|
@@ -211,7 +211,7 @@ int uwsgi_apply_routes_do(struct uwsgi_route *routes, struct wsgi_request *wsgi_
|
|
211
211
|
subject = *subject2 ;
|
212
212
|
subject_len = *subject_len2;
|
213
213
|
}
|
214
|
-
n = uwsgi_regexp_match_ovec(routes->pattern,
|
214
|
+
n = uwsgi_regexp_match_ovec(routes->pattern, subject, subject_len, routes->ovector[wsgi_req->async_id], routes->ovn[wsgi_req->async_id]);
|
215
215
|
}
|
216
216
|
else {
|
217
217
|
int ret = routes->if_func(wsgi_req, routes);
|
@@ -506,15 +506,15 @@ void uwsgi_fixup_routes(struct uwsgi_route *ur) {
|
|
506
506
|
|
507
507
|
// fill them if needed... (this is an optimization for route with a static subject)
|
508
508
|
if (ur->subject && ur->subject_len) {
|
509
|
-
|
509
|
+
if (uwsgi_regexp_build(ur->orig_route, &ur->pattern)) {
|
510
510
|
exit(1);
|
511
511
|
}
|
512
512
|
|
513
513
|
int i;
|
514
514
|
for(i=0;i<uwsgi.cores;i++) {
|
515
|
-
|
515
|
+
ur->ovn[i] = uwsgi_regexp_ovector(ur->pattern);
|
516
516
|
if (ur->ovn[i] > 0) {
|
517
|
-
ur->ovector[i] = uwsgi_calloc(sizeof(int) * (
|
517
|
+
ur->ovector[i] = uwsgi_calloc(sizeof(int) * PCRE_OVECTOR_BYTESIZE(ur->ovn[i]));
|
518
518
|
}
|
519
519
|
}
|
520
520
|
}
|
@@ -1484,38 +1484,47 @@ static int uwsgi_route_condition_regexp(struct wsgi_request *wsgi_req, struct uw
|
|
1484
1484
|
ur->condition_ub[wsgi_req->async_id] = uwsgi_routing_translate(wsgi_req, ur, NULL, 0, ur->subject_str, semicolon - ur->subject_str);
|
1485
1485
|
if (!ur->condition_ub[wsgi_req->async_id]) return -1;
|
1486
1486
|
|
1487
|
-
|
1488
|
-
pcre_extra *pattern_extra;
|
1487
|
+
uwsgi_pcre *pattern;
|
1489
1488
|
char *re = uwsgi_concat2n(semicolon+1, ur->subject_str_len - ((semicolon+1) - ur->subject_str), "", 0);
|
1490
|
-
if (uwsgi_regexp_build(re, &pattern
|
1489
|
+
if (uwsgi_regexp_build(re, &pattern)) {
|
1491
1490
|
free(re);
|
1492
1491
|
return -1;
|
1493
1492
|
}
|
1494
1493
|
free(re);
|
1495
1494
|
|
1496
1495
|
// a condition has no initialized vectors, let's create them
|
1497
|
-
ur->ovn[wsgi_req->async_id] = uwsgi_regexp_ovector(pattern
|
1496
|
+
ur->ovn[wsgi_req->async_id] = uwsgi_regexp_ovector(pattern);
|
1498
1497
|
if (ur->ovn[wsgi_req->async_id] > 0) {
|
1499
1498
|
ur->ovector[wsgi_req->async_id] = uwsgi_calloc(sizeof(int) * (3 * (ur->ovn[wsgi_req->async_id] + 1)));
|
1500
1499
|
}
|
1501
1500
|
|
1502
|
-
if (uwsgi_regexp_match_ovec(pattern,
|
1503
|
-
|
1501
|
+
if (uwsgi_regexp_match_ovec(pattern, ur->condition_ub[wsgi_req->async_id]->buf, ur->condition_ub[wsgi_req->async_id]->pos, ur->ovector[wsgi_req->async_id], ur->ovn[wsgi_req->async_id] ) >= 0) {
|
1502
|
+
#ifdef UWSGI_PCRE2
|
1503
|
+
pcre2_code_free(pattern);
|
1504
|
+
#else
|
1505
|
+
pcre_free(pattern->p);
|
1504
1506
|
#ifdef PCRE_STUDY_JIT_COMPILE
|
1505
|
-
pcre_free_study(
|
1507
|
+
pcre_free_study(pattern->extra);
|
1506
1508
|
#else
|
1507
|
-
pcre_free(
|
1509
|
+
pcre_free(pattern->extra);
|
1510
|
+
#endif
|
1511
|
+
free(pattern);
|
1508
1512
|
#endif
|
1509
1513
|
return 1;
|
1510
1514
|
}
|
1511
1515
|
|
1512
|
-
|
1516
|
+
#ifdef UWSGI_PCRE2
|
1517
|
+
pcre2_code_free(pattern);
|
1518
|
+
#else
|
1519
|
+
pcre_free(pattern->p);
|
1513
1520
|
#ifdef PCRE_STUDY_JIT_COMPILE
|
1514
|
-
pcre_free_study(
|
1521
|
+
pcre_free_study(pattern->extra);
|
1515
1522
|
#else
|
1516
|
-
pcre_free(
|
1523
|
+
pcre_free(pattern->extra);
|
1517
1524
|
#endif
|
1518
|
-
|
1525
|
+
free(pattern);
|
1526
|
+
#endif
|
1527
|
+
return 0;
|
1519
1528
|
}
|
1520
1529
|
|
1521
1530
|
static int uwsgi_route_condition_empty(struct wsgi_request *wsgi_req, struct uwsgi_route *ur) {
|
@@ -145,10 +145,10 @@ static int uwsgi_sni_cb(SSL *ssl, int *ad, void *arg) {
|
|
145
145
|
|
146
146
|
if (uwsgi.subscription_dotsplit) goto end;
|
147
147
|
|
148
|
-
#
|
148
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
149
149
|
struct uwsgi_regexp_list *url = uwsgi.sni_regexp;
|
150
150
|
while(url) {
|
151
|
-
if (uwsgi_regexp_match(url->pattern,
|
151
|
+
if (uwsgi_regexp_match(url->pattern, (char *)servername, servername_len) >= 0) {
|
152
152
|
SSL_set_SSL_CTX(ssl, url->custom_ptr);
|
153
153
|
return SSL_TLSEXT_ERR_OK;
|
154
154
|
}
|
@@ -621,7 +621,7 @@ void uwsgi_opt_sni(char *opt, char *value, void *foobar) {
|
|
621
621
|
return;
|
622
622
|
}
|
623
623
|
|
624
|
-
#
|
624
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
625
625
|
if (!strcmp(opt, "sni-regexp")) {
|
626
626
|
struct uwsgi_regexp_list *url = uwsgi_regexp_new_list(&uwsgi.sni_regexp, v);
|
627
627
|
url->custom_ptr = ctx;
|
@@ -630,7 +630,7 @@ void uwsgi_opt_sni(char *opt, char *value, void *foobar) {
|
|
630
630
|
#endif
|
631
631
|
struct uwsgi_string_list *usl = uwsgi_string_new_list(&uwsgi.sni, v);
|
632
632
|
usl->custom_ptr = ctx;
|
633
|
-
#
|
633
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
634
634
|
}
|
635
635
|
#endif
|
636
636
|
|
@@ -35,11 +35,11 @@ int uwsgi_static_want_gzip(struct wsgi_request *wsgi_req, char *filename, size_t
|
|
35
35
|
usl = usl->next;
|
36
36
|
}
|
37
37
|
|
38
|
-
#
|
38
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
39
39
|
// check for regexp
|
40
40
|
struct uwsgi_regexp_list *url = uwsgi.static_gzip;
|
41
41
|
while(url) {
|
42
|
-
if (uwsgi_regexp_match(url->pattern,
|
42
|
+
if (uwsgi_regexp_match(url->pattern, filename, *filename_len) >= 0) {
|
43
43
|
goto gzip;
|
44
44
|
}
|
45
45
|
url = url->next;
|
@@ -216,7 +216,7 @@ int uwsgi_add_expires_type(struct wsgi_request *wsgi_req, char *mime_type, int m
|
|
216
216
|
return 0;
|
217
217
|
}
|
218
218
|
|
219
|
-
#
|
219
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
220
220
|
int uwsgi_add_expires(struct wsgi_request *wsgi_req, char *filename, int filename_len, struct stat *st) {
|
221
221
|
|
222
222
|
struct uwsgi_dyn_dict *udd = uwsgi.static_expires;
|
@@ -225,7 +225,7 @@ int uwsgi_add_expires(struct wsgi_request *wsgi_req, char *filename, int filenam
|
|
225
225
|
char expires[31];
|
226
226
|
|
227
227
|
while (udd) {
|
228
|
-
if (uwsgi_regexp_match(udd->pattern,
|
228
|
+
if (uwsgi_regexp_match(udd->pattern, filename, filename_len) >= 0) {
|
229
229
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
230
230
|
int size = uwsgi_http_date(now + delta, expires);
|
231
231
|
if (size > 0) {
|
@@ -238,7 +238,7 @@ int uwsgi_add_expires(struct wsgi_request *wsgi_req, char *filename, int filenam
|
|
238
238
|
|
239
239
|
udd = uwsgi.static_expires_mtime;
|
240
240
|
while (udd) {
|
241
|
-
if (uwsgi_regexp_match(udd->pattern,
|
241
|
+
if (uwsgi_regexp_match(udd->pattern, filename, filename_len) >= 0) {
|
242
242
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
243
243
|
int size = uwsgi_http_date(st->st_mtime + delta, expires);
|
244
244
|
if (size > 0) {
|
@@ -260,7 +260,7 @@ int uwsgi_add_expires_path_info(struct wsgi_request *wsgi_req, struct stat *st)
|
|
260
260
|
char expires[31];
|
261
261
|
|
262
262
|
while (udd) {
|
263
|
-
if (uwsgi_regexp_match(udd->pattern,
|
263
|
+
if (uwsgi_regexp_match(udd->pattern, wsgi_req->path_info, wsgi_req->path_info_len) >= 0) {
|
264
264
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
265
265
|
int size = uwsgi_http_date(now + delta, expires);
|
266
266
|
if (size > 0) {
|
@@ -273,7 +273,7 @@ int uwsgi_add_expires_path_info(struct wsgi_request *wsgi_req, struct stat *st)
|
|
273
273
|
|
274
274
|
udd = uwsgi.static_expires_path_info_mtime;
|
275
275
|
while (udd) {
|
276
|
-
if (uwsgi_regexp_match(udd->pattern,
|
276
|
+
if (uwsgi_regexp_match(udd->pattern, wsgi_req->path_info, wsgi_req->path_info_len) >= 0) {
|
277
277
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
278
278
|
int size = uwsgi_http_date(st->st_mtime + delta, expires);
|
279
279
|
if (size > 0) {
|
@@ -295,7 +295,7 @@ int uwsgi_add_expires_uri(struct wsgi_request *wsgi_req, struct stat *st) {
|
|
295
295
|
char expires[31];
|
296
296
|
|
297
297
|
while (udd) {
|
298
|
-
if (uwsgi_regexp_match(udd->pattern,
|
298
|
+
if (uwsgi_regexp_match(udd->pattern, wsgi_req->uri, wsgi_req->uri_len) >= 0) {
|
299
299
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
300
300
|
int size = uwsgi_http_date(now + delta, expires);
|
301
301
|
if (size > 0) {
|
@@ -308,7 +308,7 @@ int uwsgi_add_expires_uri(struct wsgi_request *wsgi_req, struct stat *st) {
|
|
308
308
|
|
309
309
|
udd = uwsgi.static_expires_uri_mtime;
|
310
310
|
while (udd) {
|
311
|
-
if (uwsgi_regexp_match(udd->pattern,
|
311
|
+
if (uwsgi_regexp_match(udd->pattern, wsgi_req->uri, wsgi_req->uri_len) >= 0) {
|
312
312
|
int delta = uwsgi_str_num(udd->value, udd->vallen);
|
313
313
|
int size = uwsgi_http_date(st->st_mtime + delta, expires);
|
314
314
|
if (size > 0) {
|
@@ -507,7 +507,7 @@ int uwsgi_real_file_serve(struct wsgi_request *wsgi_req, char *real_filename, si
|
|
507
507
|
if (uwsgi_response_prepare_headers(wsgi_req, "200 OK", 6)) return -1;
|
508
508
|
}
|
509
509
|
|
510
|
-
#
|
510
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
511
511
|
uwsgi_add_expires(wsgi_req, real_filename, real_filename_len, st);
|
512
512
|
uwsgi_add_expires_path_info(wsgi_req, st);
|
513
513
|
uwsgi_add_expires_uri(wsgi_req, st);
|
@@ -1036,12 +1036,6 @@ void uwsgi_destroy_request(struct wsgi_request *wsgi_req) {
|
|
1036
1036
|
|
1037
1037
|
close_and_free_request(wsgi_req);
|
1038
1038
|
|
1039
|
-
int foo;
|
1040
|
-
if (uwsgi.threads > 1) {
|
1041
|
-
// now the thread can die...
|
1042
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &foo);
|
1043
|
-
}
|
1044
|
-
|
1045
1039
|
// reset for avoiding following requests to fail on non-uwsgi protocols
|
1046
1040
|
// thanks Marko Tiikkaja for catching it
|
1047
1041
|
wsgi_req->uh->pktsize = 0;
|
@@ -1122,11 +1116,6 @@ void uwsgi_close_request(struct wsgi_request *wsgi_req) {
|
|
1122
1116
|
func(wsgi_req);
|
1123
1117
|
}
|
1124
1118
|
|
1125
|
-
if (uwsgi.threads > 1) {
|
1126
|
-
// now the thread can die...
|
1127
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &tmp_id);
|
1128
|
-
}
|
1129
|
-
|
1130
1119
|
// leave harakiri mode
|
1131
1120
|
if (uwsgi.workers[uwsgi.mywid].harakiri > 0) {
|
1132
1121
|
set_harakiri(0);
|
@@ -1546,18 +1535,12 @@ int wsgi_req_accept(int queue, struct wsgi_request *wsgi_req) {
|
|
1546
1535
|
}
|
1547
1536
|
}
|
1548
1537
|
|
1549
|
-
// kill the thread after the request completion
|
1550
|
-
if (uwsgi.threads > 1)
|
1551
|
-
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &ret);
|
1552
|
-
|
1553
1538
|
if (uwsgi.signal_socket > -1 && (interesting_fd == uwsgi.signal_socket || interesting_fd == uwsgi.my_signal_socket)) {
|
1554
1539
|
|
1555
1540
|
thunder_unlock;
|
1556
1541
|
|
1557
1542
|
uwsgi_receive_signal(interesting_fd, "worker", uwsgi.mywid);
|
1558
1543
|
|
1559
|
-
if (uwsgi.threads > 1)
|
1560
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &ret);
|
1561
1544
|
return -1;
|
1562
1545
|
}
|
1563
1546
|
|
@@ -1568,8 +1551,6 @@ int wsgi_req_accept(int queue, struct wsgi_request *wsgi_req) {
|
|
1568
1551
|
wsgi_req->fd = wsgi_req->socket->proto_accept(wsgi_req, interesting_fd);
|
1569
1552
|
thunder_unlock;
|
1570
1553
|
if (wsgi_req->fd < 0) {
|
1571
|
-
if (uwsgi.threads > 1)
|
1572
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &ret);
|
1573
1554
|
return -1;
|
1574
1555
|
}
|
1575
1556
|
|
@@ -1584,8 +1565,6 @@ int wsgi_req_accept(int queue, struct wsgi_request *wsgi_req) {
|
|
1584
1565
|
}
|
1585
1566
|
|
1586
1567
|
thunder_unlock;
|
1587
|
-
if (uwsgi.threads > 1)
|
1588
|
-
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &ret);
|
1589
1568
|
return -1;
|
1590
1569
|
}
|
1591
1570
|
|
@@ -2301,7 +2280,7 @@ struct uwsgi_string_list *uwsgi_string_new_list(struct uwsgi_string_list **list,
|
|
2301
2280
|
return uwsgi_string;
|
2302
2281
|
}
|
2303
2282
|
|
2304
|
-
#
|
2283
|
+
#if defined(UWSGI_PCRE) || defined(UWSGI_PCRE2)
|
2305
2284
|
struct uwsgi_regexp_list *uwsgi_regexp_custom_new_list(struct uwsgi_regexp_list **list, char *value, char *custom) {
|
2306
2285
|
|
2307
2286
|
struct uwsgi_regexp_list *url = *list, *old_url;
|
@@ -2320,7 +2299,7 @@ struct uwsgi_regexp_list *uwsgi_regexp_custom_new_list(struct uwsgi_regexp_list
|
|
2320
2299
|
old_url->next = url;
|
2321
2300
|
}
|
2322
2301
|
|
2323
|
-
if (uwsgi_regexp_build(value, &url->pattern
|
2302
|
+
if (uwsgi_regexp_build(value, &url->pattern)) {
|
2324
2303
|
exit(1);
|
2325
2304
|
}
|
2326
2305
|
url->next = NULL;
|
@@ -2333,14 +2312,13 @@ struct uwsgi_regexp_list *uwsgi_regexp_custom_new_list(struct uwsgi_regexp_list
|
|
2333
2312
|
|
2334
2313
|
int uwsgi_regexp_match_pattern(char *pattern, char *str) {
|
2335
2314
|
|
2336
|
-
|
2337
|
-
pcre_extra *regexp_extra;
|
2315
|
+
uwsgi_pcre *regexp;
|
2338
2316
|
|
2339
|
-
if (uwsgi_regexp_build(pattern, ®exp
|
2317
|
+
if (uwsgi_regexp_build(pattern, ®exp))
|
2340
2318
|
return 1;
|
2341
|
-
return !uwsgi_regexp_match(regexp, regexp_extra, str, strlen(str));
|
2342
|
-
}
|
2343
2319
|
|
2320
|
+
return !uwsgi_regexp_match(regexp, str, strlen(str));
|
2321
|
+
}
|
2344
2322
|
|
2345
2323
|
#endif
|
2346
2324
|
|