uWSGI 2.0.21__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.
Files changed (683) hide show
  1. {uwsgi-2.0.21 → uwsgi-2.0.22}/.github/workflows/compile-test.yml +11 -6
  2. {uwsgi-2.0.21 → uwsgi-2.0.22}/.github/workflows/test.yml +6 -12
  3. {uwsgi-2.0.21 → uwsgi-2.0.22}/PKG-INFO +1 -1
  4. {uwsgi-2.0.21 → uwsgi-2.0.22}/apache2/mod_proxy_uwsgi.c +35 -13
  5. uwsgi-2.0.22/buildconf/travis.ini +3 -0
  6. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/init.c +2 -0
  7. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/master_checks.c +45 -10
  8. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/master_utils.c +9 -2
  9. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/uwsgi.c +3 -0
  10. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jvm/uwsgiplugin.py +13 -10
  11. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/php/php_plugin.c +4 -0
  12. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/python_plugin.c +1 -1
  13. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rack/rack_api.c +56 -56
  14. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rack/rack_plugin.c +12 -8
  15. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rack/uwsgiplugin.py +2 -0
  16. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ruby19/uwsgiplugin.py +3 -1
  17. uwsgi-2.0.22/tests/harakiri.py +25 -0
  18. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgi.gemspec +1 -1
  19. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgi.h +6 -1
  20. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgiconfig.py +1 -1
  21. uwsgi-2.0.21/buildconf/travis.ini +0 -3
  22. {uwsgi-2.0.21 → uwsgi-2.0.22}/.gitignore +0 -0
  23. {uwsgi-2.0.21 → uwsgi-2.0.22}/CONTRIBUTORS +0 -0
  24. {uwsgi-2.0.21 → uwsgi-2.0.22}/INSTALL +0 -0
  25. {uwsgi-2.0.21 → uwsgi-2.0.22}/LICENSE +0 -0
  26. {uwsgi-2.0.21 → uwsgi-2.0.22}/Makefile +0 -0
  27. {uwsgi-2.0.21 → uwsgi-2.0.22}/README +0 -0
  28. {uwsgi-2.0.21 → uwsgi-2.0.22}/apache2/mod_Ruwsgi.c +0 -0
  29. {uwsgi-2.0.21 → uwsgi-2.0.22}/apache2/mod_uwsgi.c +0 -0
  30. {uwsgi-2.0.21 → uwsgi-2.0.22}/attach.py +0 -0
  31. {uwsgi-2.0.21 → uwsgi-2.0.22}/bin/uwsgi +0 -0
  32. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/all.ini +0 -0
  33. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/asyncio.ini +0 -0
  34. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/base.ini +0 -0
  35. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/cgi.ini +0 -0
  36. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/core.ini +0 -0
  37. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/coroae.ini +0 -0
  38. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/coverity.ini +0 -0
  39. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/default.ini +0 -0
  40. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/django.ini +0 -0
  41. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/embedded.ini +0 -0
  42. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/erlang.ini +0 -0
  43. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/gccgo.ini +0 -0
  44. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/gevent.ini +0 -0
  45. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/glusterfs.ini +0 -0
  46. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/gridfs.ini +0 -0
  47. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/jwsgi.ini +0 -0
  48. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/lib.ini +0 -0
  49. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/lua.ini +0 -0
  50. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/luap.ini +0 -0
  51. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/minimal.ini +0 -0
  52. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/modular.ini +0 -0
  53. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/mono.ini +0 -0
  54. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/nolang.ini +0 -0
  55. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/package.ini +0 -0
  56. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/php.ini +0 -0
  57. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/plonly.ini +0 -0
  58. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/ppa.ini +0 -0
  59. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/psgi.ini +0 -0
  60. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pyerl.ini +0 -0
  61. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pylua.ini +0 -0
  62. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pyonly.ini +0 -0
  63. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pypy.ini +0 -0
  64. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pypyonly.ini +0 -0
  65. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pyring.ini +0 -0
  66. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pyuwsgi.ini +0 -0
  67. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/pyuwsginossl.ini +0 -0
  68. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/rack.ini +0 -0
  69. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/rados.ini +0 -0
  70. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/rbonly.ini +0 -0
  71. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/ring.ini +0 -0
  72. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/ruby2.ini +0 -0
  73. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/servlet.ini +0 -0
  74. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/unbit.ini +0 -0
  75. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/unbitstaff.ini +0 -0
  76. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/uwsgi.it.ini +0 -0
  77. {uwsgi-2.0.21 → uwsgi-2.0.22}/buildconf/v8.ini +0 -0
  78. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/Uwsgi.pm +0 -0
  79. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/binder.pl +0 -0
  80. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/centos_init_script +0 -0
  81. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/cgi_python.c +0 -0
  82. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/cryptologger.rb +0 -0
  83. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/emperormon.ru +0 -0
  84. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/fdconf.pl +0 -0
  85. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/graphite_uwsgi.py +0 -0
  86. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
  87. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
  88. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/loadapp.pl +0 -0
  89. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/pypy/uwsgi_pypy_greenlets.py +0 -0
  90. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/pyuwsgi.py +0 -0
  91. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/runuwsgi.py +0 -0
  92. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/securesubscribe.pl +0 -0
  93. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/spoolqueue/producer.py +0 -0
  94. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/spoolqueue/tasks.py +0 -0
  95. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/spoolqueue/tasksconsumer.py +0 -0
  96. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/subscribe.pl +0 -0
  97. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/twuwsgi.py +0 -0
  98. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/upstart/emperor.conf +0 -0
  99. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/upstart/uwsgi.conf +0 -0
  100. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/upython +0 -0
  101. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/urack.rb +0 -0
  102. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi-cache-monitor.py +0 -0
  103. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi.erl +0 -0
  104. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi.java +0 -0
  105. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi.rb +0 -0
  106. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi_client.c +0 -0
  107. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgi_dynamic_client.c +0 -0
  108. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/uwsgisubscribers.ru +0 -0
  109. {uwsgi-2.0.21 → uwsgi-2.0.22}/contrib/xinetd_uwsgi +0 -0
  110. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/alarm.c +0 -0
  111. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/async.c +0 -0
  112. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/buffer.c +0 -0
  113. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/cache.c +0 -0
  114. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/chunked.c +0 -0
  115. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/clang_fake.c +0 -0
  116. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/clock.c +0 -0
  117. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/config.c +0 -0
  118. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/cookie.c +0 -0
  119. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/cron.c +0 -0
  120. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/daemons.c +0 -0
  121. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/emperor.c +0 -0
  122. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/errors.c +0 -0
  123. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/event.c +0 -0
  124. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/exceptions.c +0 -0
  125. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/fifo.c +0 -0
  126. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/fsmon.c +0 -0
  127. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/gateway.c +0 -0
  128. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/hash.c +0 -0
  129. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/hooks.c +0 -0
  130. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/ini.c +0 -0
  131. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/io.c +0 -0
  132. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/json.c +0 -0
  133. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/legion.c +0 -0
  134. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/lock.c +0 -0
  135. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/logging. +0 -0
  136. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/logging.c +0 -0
  137. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/loop.c +0 -0
  138. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/master.c +0 -0
  139. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/master_events.c +0 -0
  140. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/metrics.c +0 -0
  141. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/mount.c +0 -0
  142. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/mule.c +0 -0
  143. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/notify.c +0 -0
  144. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/offload.c +2 -2
  145. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/plugins.c +0 -0
  146. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/plugins_builder.c +0 -0
  147. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/progress.c +0 -0
  148. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/protocol.c +0 -0
  149. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/querystring.c +0 -0
  150. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/queue.c +0 -0
  151. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/rb_timers.c +0 -0
  152. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/reader.c +0 -0
  153. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/regexp.c +0 -0
  154. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/routing.c +0 -0
  155. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/rpc.c +0 -0
  156. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/sendfile.c +0 -0
  157. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/setup_utils.c +0 -0
  158. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/sharedarea.c +0 -0
  159. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/signal.c +0 -0
  160. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/skel.c +0 -0
  161. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/snmp.c +0 -0
  162. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/socket.c +0 -0
  163. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/spooler.c +0 -0
  164. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/ssl.c +0 -0
  165. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/static.c +0 -0
  166. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/stats.c +0 -0
  167. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/storage.c +0 -0
  168. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/strings.c +0 -0
  169. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/subscription.c +0 -0
  170. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/timebomb.c +0 -0
  171. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/transformations.c +0 -0
  172. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/utils.c +0 -0
  173. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/websockets.c +0 -0
  174. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/writer.c +0 -0
  175. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/xmlconf.c +0 -0
  176. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/yaml.c +0 -0
  177. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/zeus.c +0 -0
  178. {uwsgi-2.0.21 → uwsgi-2.0.22}/core/zlib.c +0 -0
  179. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/bootstrap.py +0 -0
  180. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/bootstrap2.py +0 -0
  181. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/bootstrap3.py +0 -0
  182. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/bootstrap4.py +0 -0
  183. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/bootstrap5.py +0 -0
  184. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config.lua +0 -0
  185. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config.ru +0 -0
  186. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config17.ru +0 -0
  187. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config2.lua +0 -0
  188. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config2.ru +0 -0
  189. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/config30.ru +0 -0
  190. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/corostream.pl +0 -0
  191. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/debug.ini +0 -0
  192. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/fibers.ru +0 -0
  193. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/fibers.yml +0 -0
  194. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/flaskpost.py +0 -0
  195. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/heavytest.ini +0 -0
  196. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/heavytest.py +0 -0
  197. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/info_uwsgi.php +0 -0
  198. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/logic.ini +0 -0
  199. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/mega.xml +0 -0
  200. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/mjpeg_stream.py +0 -0
  201. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/mojoapp.pl +0 -0
  202. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/multi.ini +0 -0
  203. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/multi.xml +0 -0
  204. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/multiapp.py +0 -0
  205. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/protected.ini +0 -0
  206. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/router.lua +0 -0
  207. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/simple_app.py +0 -0
  208. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/simple_app_wsgi2.py +0 -0
  209. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/simple_logger.py +0 -0
  210. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/sites.xml +0 -0
  211. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/sputnik.ws +0 -0
  212. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/staticfilesnmp.py +0 -0
  213. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/taskqueue.py +0 -0
  214. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgi.xml +0 -0
  215. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgirouter.py +0 -0
  216. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgirouter2.py +0 -0
  217. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgirouter3.py +0 -0
  218. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgirouter4.py +0 -0
  219. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgirouter5.py +0 -0
  220. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/uwsgistatus.py +0 -0
  221. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/welcome.ini +0 -0
  222. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/welcome.py +0 -0
  223. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/welcome3.py +0 -0
  224. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/werkzeug.js +0 -0
  225. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/werkzeug.yml +0 -0
  226. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/werkzeug_strict.yml +0 -0
  227. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/xmlindex-html.xsl +0 -0
  228. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/xmlindex.ini +0 -0
  229. {uwsgi-2.0.21 → uwsgi-2.0.22}/examples/zmqgevent.ini +0 -0
  230. {uwsgi-2.0.21 → uwsgi-2.0.22}/ext/uwsgi/extconf.rb +0 -0
  231. {uwsgi-2.0.21 → uwsgi-2.0.22}/install.sh +0 -0
  232. {uwsgi-2.0.21 → uwsgi-2.0.22}/lib/linux_ns.c +0 -0
  233. {uwsgi-2.0.21 → uwsgi-2.0.22}/lib/netlink.c +0 -0
  234. {uwsgi-2.0.21 → uwsgi-2.0.22}/lib/sun_fixes.c +0 -0
  235. {uwsgi-2.0.21 → uwsgi-2.0.22}/logo_uWSGI.png +0 -0
  236. {uwsgi-2.0.21 → uwsgi-2.0.22}/logo_uWSGI.svg +0 -0
  237. {uwsgi-2.0.21 → uwsgi-2.0.22}/mongrel2-uwsgi.conf +0 -0
  238. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/airbrake/airbrake_plugin.c +0 -0
  239. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/airbrake/uwsgiplugin.py +0 -0
  240. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
  241. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_curl/uwsgiplugin.py +0 -0
  242. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_speech/alarm_speech.m +0 -0
  243. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_speech/uwsgiplugin.py +0 -0
  244. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
  245. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_xmpp/gloox.cc +0 -0
  246. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
  247. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/asyncio/asyncio.c +0 -0
  248. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/asyncio/uwsgiplugin.py +0 -0
  249. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cache/cache.c +0 -0
  250. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cache/uwsgiplugin.py +0 -0
  251. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/carbon/carbon.c +0 -0
  252. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/carbon/uwsgiplugin.py +0 -0
  253. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cgi/cgi_plugin.c +0 -0
  254. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cgi/uwsgiplugin.py +0 -0
  255. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
  256. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
  257. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
  258. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
  259. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/clock_monotonic/clock_monotonic.c +0 -0
  260. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
  261. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/clock_realtime/clock_realtime.c +0 -0
  262. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/clock_realtime/uwsgiplugin.py +0 -0
  263. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/corerouter/corerouter.c +0 -0
  264. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/corerouter/cr.h +0 -0
  265. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/corerouter/cr_common.c +0 -0
  266. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/corerouter/cr_map.c +0 -0
  267. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/corerouter/uwsgiplugin.py +0 -0
  268. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/coroae/coroae.c +0 -0
  269. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/coroae/uwsgiplugin.py +0 -0
  270. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cplusplus/base.cc +0 -0
  271. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cplusplus/plugin.c +0 -0
  272. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/cplusplus/uwsgiplugin.py +0 -0
  273. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/curl_cron/curl_cron.c +0 -0
  274. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/curl_cron/uwsgiplugin.py +0 -0
  275. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/dumbloop/dumb.c +0 -0
  276. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/dumbloop/uwsgiplugin.py +0 -0
  277. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/dummy/dummy.c +0 -0
  278. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/dummy/uwsgiplugin.py +0 -0
  279. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/echo/echo_plugin.c +0 -0
  280. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/echo/uwsgiplugin.py +0 -0
  281. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_amqp/amqp.c +0 -0
  282. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_amqp/emperor_amqp.c +0 -0
  283. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
  284. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
  285. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_mongodb/plugin.c +0 -0
  286. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
  287. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_pg/emperor_pg.c +0 -0
  288. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_pg/uwsgiplugin.py +0 -0
  289. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
  290. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
  291. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/example/example_plugin.c +0 -0
  292. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/example/uwsgiplugin.py +0 -0
  293. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/exception_log/exception_log.c +0 -0
  294. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/exception_log/uwsgiplugin.py +0 -0
  295. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/fastrouter/fastrouter.c +0 -0
  296. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/fastrouter/uwsgiplugin.py +0 -0
  297. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/fiber/fiber.c +0 -0
  298. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/fiber/uwsgiplugin.py +0 -0
  299. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/forkptyrouter/forkptyrouter.c +0 -0
  300. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
  301. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gccgo/gccgo_plugin.c +0 -0
  302. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gccgo/uwsgi.go +0 -0
  303. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gccgo/uwsgiplugin.py +0 -0
  304. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/geoip/geoip.c +0 -0
  305. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/geoip/uwsgiplugin.py +0 -0
  306. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gevent/gevent.c +0 -0
  307. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gevent/gevent.h +0 -0
  308. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gevent/hooks.c +0 -0
  309. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gevent/uwsgiplugin.py +0 -0
  310. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/glusterfs/glusterfs.c +0 -0
  311. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/glusterfs/uwsgiplugin.py +0 -0
  312. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/graylog2/graylog2_plugin.c +0 -0
  313. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/graylog2/uwsgiplugin.py +0 -0
  314. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/greenlet/greenlet.c +0 -0
  315. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/greenlet/uwsgiplugin.py +0 -0
  316. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gridfs/gridfs.cc +0 -0
  317. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gridfs/plugin.c +0 -0
  318. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/gridfs/uwsgiplugin.py +0 -0
  319. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/common.h +0 -0
  320. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/http.c +0 -0
  321. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/https.c +0 -0
  322. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/keepalive.c +0 -0
  323. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/spdy3.c +0 -0
  324. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/spdy3.h +0 -0
  325. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/http/uwsgiplugin.py +0 -0
  326. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jvm/jvm.h +0 -0
  327. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jvm/jvm_plugin.c +0 -0
  328. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jvm/uwsgi.java +0 -0
  329. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jwsgi/jwsgi_plugin.c +0 -0
  330. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/jwsgi/uwsgiplugin.py +0 -0
  331. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ldap/ldap.c +0 -0
  332. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ldap/uwsgiplugin.py +0 -0
  333. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
  334. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
  335. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/libffi/libffi.c +0 -0
  336. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/libffi/uwsgiplugin.py +0 -0
  337. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/libtcc/libtcc.c +0 -0
  338. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/libtcc/uwsgiplugin.py +0 -0
  339. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logcrypto/logcrypto.c +0 -0
  340. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logcrypto/uwsgiplugin.py +0 -0
  341. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logfile/logfile.c +0 -0
  342. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logfile/uwsgiplugin.py +0 -0
  343. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logpipe/logpipe.c +0 -0
  344. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logpipe/uwsgiplugin.py +0 -0
  345. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logsocket/logsocket_plugin.c +0 -0
  346. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logsocket/uwsgiplugin.py +0 -0
  347. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logzmq/plugin.c +0 -0
  348. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/logzmq/uwsgiplugin.py +0 -0
  349. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/lua/lua_plugin.c +0 -0
  350. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/lua/uwsgiplugin.py +0 -0
  351. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/matheval/math.c +0 -0
  352. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/matheval/uwsgiplugin.py +0 -0
  353. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongodb/plugin.c +0 -0
  354. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongodb/uwsgiplugin.py +0 -0
  355. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongodblog/mongodblog_plugin.c +0 -0
  356. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongodblog/uwsgiplugin.py +0 -0
  357. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongrel2/mongrel2.c +0 -0
  358. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mongrel2/uwsgiplugin.py +0 -0
  359. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mono/mono_plugin.c +0 -0
  360. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mono/uwsgi.cs +0 -0
  361. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/mono/uwsgiplugin.py +0 -0
  362. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/msgpack/msgpack.c +0 -0
  363. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/msgpack/uwsgiplugin.py +0 -0
  364. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/nagios/nagios.c +0 -0
  365. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/nagios/uwsgiplugin.py +0 -0
  366. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/notfound/notfound.c +0 -0
  367. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/notfound/uwsgiplugin.py +0 -0
  368. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/objc_gc/objc_gc.m +0 -0
  369. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/objc_gc/uwsgiplugin.py +0 -0
  370. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pam/pam.c +0 -0
  371. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pam/uwsgiplugin.py +0 -0
  372. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/php/common.h +0 -0
  373. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/php/session.c +0 -0
  374. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/php/uwsgiplugin.py +0 -0
  375. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ping/ping_plugin.c +0 -0
  376. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ping/uwsgiplugin.py +0 -0
  377. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/psgi.h +0 -0
  378. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/psgi_loader.c +0 -0
  379. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/psgi_plugin.c +0 -0
  380. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/psgi_response.c +0 -0
  381. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/uwsgi_plmodule.c +0 -0
  382. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/psgi/uwsgiplugin.py +0 -0
  383. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pty/pty.c +0 -0
  384. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pty/uwsgiplugin.py +0 -0
  385. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pypy/README +0 -0
  386. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pypy/pypy_plugin.c +0 -0
  387. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pypy/pypy_setup.py +0 -0
  388. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pypy/uwsgiplugin.py +0 -0
  389. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/gil.c +0 -0
  390. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/profiler.c +0 -0
  391. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/pump_subhandler.c +0 -0
  392. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/pyloader.c +0 -0
  393. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/pyutils.c +0 -0
  394. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/raw.c +0 -0
  395. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/symimporter.c +0 -0
  396. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/tracebacker.c +0 -0
  397. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/uwsgi_pymodule.c +0 -0
  398. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/uwsgi_python.h +0 -0
  399. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/uwsgiplugin.py +0 -0
  400. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/web3_subhandler.c +0 -0
  401. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/wsgi_handlers.c +0 -0
  402. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/wsgi_headers.c +0 -0
  403. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/python/wsgi_subhandler.c +0 -0
  404. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pyuwsgi/pyuwsgi.c +0 -0
  405. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
  406. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rack/uwsgi_rack.h +0 -0
  407. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rados/rados.c +0 -0
  408. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rados/uwsgiplugin.py +0 -0
  409. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rawrouter/rawrouter.c +0 -0
  410. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rawrouter/uwsgiplugin.py +0 -0
  411. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rbthreads/rbthreads.c +0 -0
  412. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rbthreads/uwsgiplugin.py +0 -0
  413. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/redislog/redislog_plugin.c +0 -0
  414. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/redislog/uwsgiplugin.py +0 -0
  415. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ring/ring_plugin.c +0 -0
  416. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ring/uwsgiplugin.py +0 -0
  417. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_access/router_access.c +0 -0
  418. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_access/uwsgiplugin.py +0 -0
  419. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_basicauth/router_basicauth.c +0 -0
  420. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_basicauth/uwsgiplugin.py +0 -0
  421. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_cache/router_cache.c +0 -0
  422. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_cache/uwsgiplugin.py +0 -0
  423. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_expires/expires.c +0 -0
  424. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_expires/uwsgiplugin.py +0 -0
  425. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_hash/router_hash.c +0 -0
  426. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_hash/uwsgiplugin.py +0 -0
  427. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_http/router_http.c +0 -0
  428. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_http/uwsgiplugin.py +0 -0
  429. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_memcached/router_memcached.c +0 -0
  430. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_memcached/uwsgiplugin.py +0 -0
  431. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_metrics/plugin.c +0 -0
  432. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_metrics/uwsgiplugin.py +0 -0
  433. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_radius/radius.c +0 -0
  434. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_radius/uwsgiplugin.py +0 -0
  435. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_redirect/router_redirect.c +0 -0
  436. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_redirect/uwsgiplugin.py +0 -0
  437. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_redis/router_redis.c +0 -0
  438. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_redis/uwsgiplugin.py +0 -0
  439. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_rewrite/router_rewrite.c +0 -0
  440. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_rewrite/uwsgiplugin.py +0 -0
  441. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_spnego/router_spnego.c +0 -0
  442. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_spnego/uwsgiplugin.py +0 -0
  443. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_static/router_static.c +0 -0
  444. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_static/uwsgiplugin.py +0 -0
  445. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_uwsgi/router_uwsgi.c +0 -0
  446. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
  447. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_xmldir/router_xmldir.c +0 -0
  448. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/router_xmldir/uwsgiplugin.py +0 -0
  449. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rpc/rpc_plugin.c +0 -0
  450. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rpc/uwsgiplugin.py +0 -0
  451. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rrdtool/rrdtool.c +0 -0
  452. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rrdtool/uwsgiplugin.py +0 -0
  453. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rsyslog/rsyslog_plugin.c +0 -0
  454. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/rsyslog/uwsgiplugin.py +0 -0
  455. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/servlet/servlet_plugin.c +0 -0
  456. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/servlet/uwsgi_servlet.java +0 -0
  457. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/servlet/uwsgiplugin.py +0 -0
  458. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/signal/signal_plugin.c +0 -0
  459. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/signal/uwsgiplugin.py +0 -0
  460. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/spooler/spooler_plugin.c +0 -0
  461. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/spooler/uwsgiplugin.py +0 -0
  462. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/sqlite3/plugin.c +0 -0
  463. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/sqlite3/uwsgiplugin.py +0 -0
  464. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ssi/ssi.c +0 -0
  465. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ssi/uwsgiplugin.py +0 -0
  466. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/sslrouter/sslrouter.c +0 -0
  467. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/sslrouter/uwsgiplugin.py +0 -0
  468. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stackless/stackless.c +0 -0
  469. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stackless/uwsgiplugin.py +0 -0
  470. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_file/plugin.c +0 -0
  471. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
  472. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/plugin.c +0 -0
  473. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
  474. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
  475. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_socket/plugin.c +0 -0
  476. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
  477. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_statsd/plugin.c +0 -0
  478. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
  479. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/symcall/symcall_plugin.c +0 -0
  480. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/symcall/uwsgiplugin.py +0 -0
  481. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/syslog/syslog_plugin.c +0 -0
  482. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/syslog/uwsgiplugin.py +0 -0
  483. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/systemd_logger/systemd_logger.c +0 -0
  484. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/systemd_logger/uwsgiplugin.py +0 -0
  485. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tornado/tornado.c +0 -0
  486. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tornado/uwsgiplugin.py +0 -0
  487. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_chunked/chunked.c +0 -0
  488. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
  489. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_gzip/gzip.c +0 -0
  490. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
  491. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_offload/offload.c +0 -0
  492. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_offload/uwsgiplugin.py +0 -0
  493. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_template/tt.c +0 -0
  494. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_template/uwsgiplugin.py +0 -0
  495. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_tofile/tofile.c +0 -0
  496. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
  497. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_toupper/toupper.c +0 -0
  498. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
  499. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tuntap/common.c +0 -0
  500. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tuntap/common.h +0 -0
  501. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tuntap/firewall.c +0 -0
  502. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tuntap/tuntap.c +0 -0
  503. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/tuntap/uwsgiplugin.py +0 -0
  504. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ugreen/ugreen.c +0 -0
  505. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/ugreen/uwsgiplugin.py +0 -0
  506. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/plugin.c +0 -0
  507. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/uwsgiplugin.py +0 -0
  508. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/v8_commonjs.cc +0 -0
  509. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/v8_jsgi.cc +0 -0
  510. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/v8_uwsgi.cc +0 -0
  511. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/v8/v8_uwsgi.h +0 -0
  512. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/webdav/uwsgiplugin.py +0 -0
  513. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/webdav/webdav.c +0 -0
  514. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/xattr/uwsgiplugin.py +0 -0
  515. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/xattr/xattr.c +0 -0
  516. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/xslt/uwsgiplugin.py +0 -0
  517. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/xslt/xslt.c +0 -0
  518. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/zabbix/plugin.c +0 -0
  519. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/zabbix/uwsgiplugin.py +0 -0
  520. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/zergpool/uwsgiplugin.py +0 -0
  521. {uwsgi-2.0.21 → uwsgi-2.0.22}/plugins/zergpool/zergpool.c +0 -0
  522. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/BUILD +0 -0
  523. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/base.c +0 -0
  524. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/fastcgi.c +0 -0
  525. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/http.c +0 -0
  526. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/puwsgi.c +0 -0
  527. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/scgi.c +0 -0
  528. {uwsgi-2.0.21 → uwsgi-2.0.22}/proto/uwsgi.c +0 -0
  529. {uwsgi-2.0.21 → uwsgi-2.0.22}/setup.cpyext.py +0 -0
  530. {uwsgi-2.0.21 → uwsgi-2.0.22}/setup.py +0 -0
  531. {uwsgi-2.0.21 → uwsgi-2.0.22}/setup.pyuwsgi.py +0 -0
  532. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/cachebitmap.ini +0 -0
  533. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/cachebitmap.py +0 -0
  534. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/cachetest.py +0 -0
  535. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/clojure/myapp.clj +0 -0
  536. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/core/apps/read_body_and_send.pl +0 -0
  537. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/core/read_body_and_send.pl +0 -0
  538. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/core/url_sanitize.pl +0 -0
  539. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/go/cachetest.go +0 -0
  540. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/go/complextest.go +0 -0
  541. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/go/uploadtest.go +0 -0
  542. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/java/rpc.java +0 -0
  543. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/lua/basic.lua +0 -0
  544. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/mono/cache.aspx +0 -0
  545. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/mules/mulebrain.py +0 -0
  546. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/mules/reload.py +0 -0
  547. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/mules/signal_management.py +0 -0
  548. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/active_workers_signal.pl +0 -0
  549. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/apps/input_with_offset.pl +0 -0
  550. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test.psgi +0 -0
  551. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_benchmark.pl +0 -0
  552. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_harakiri.psgi +0 -0
  553. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_hello.psgi +0 -0
  554. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_input_with_offset.pl +0 -0
  555. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_post.psgi +0 -0
  556. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_sleepy.psgi +0 -0
  557. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/perl/test_streaming.psgi +0 -0
  558. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/pypy/t_continulet1.py +0 -0
  559. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/pypy/t_continulet2.py +0 -0
  560. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/forcecl.py +0 -0
  561. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/manage_script_name/manage_script_name_test.ini +0 -0
  562. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/manage_script_name/test_manage_script_name.py +0 -0
  563. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/manage_script_name/useless_app.py +0 -0
  564. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_decorator_test.ini +0 -0
  565. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
  566. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/spooler_decorators/spooler_handlers.py +0 -0
  567. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/python/testba.py +0 -0
  568. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/README.md +0 -0
  569. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/config.ini +0 -0
  570. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/project.clj +0 -0
  571. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
  572. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
  573. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/body.clj +0 -0
  574. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
  575. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
  576. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/routing/auth.ini +0 -0
  577. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/routing/errorlimiter.ini +0 -0
  578. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/routing/limiter.ini +0 -0
  579. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/sharedarea/bigranges.ini +0 -0
  580. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/sharedarea/bigranges.py +0 -0
  581. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/sharedarea/sharedarea_incdec.ini +0 -0
  582. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/sharedarea/sharedarea_incdec.py +0 -0
  583. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/spooler/read.py +0 -0
  584. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/spooler/reload.py +0 -0
  585. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/spooler/spooldir/.gitignore +0 -0
  586. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/webdav/carddav.ini +0 -0
  587. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/xslt/cd.xml +0 -0
  588. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/xslt/cd.xml.xslt +0 -0
  589. {uwsgi-2.0.21 → uwsgi-2.0.22}/t/xslt/routex.ini +0 -0
  590. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/Responder.pm +0 -0
  591. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/__init__.py +0 -0
  592. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/badthread.py +0 -0
  593. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/badwrites.py +0 -0
  594. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/cpubound_async.py +0 -0
  595. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/cpubound_green.py +0 -0
  596. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/cpubound_stackless.py +0 -0
  597. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/main.py +0 -0
  598. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/master-nothreads.ini +0 -0
  599. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +0 -0
  600. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +0 -0
  601. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/master-threads-10workers.ini +0 -0
  602. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/master-threads-1worker.ini +0 -0
  603. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/nomaster-threads-10workers.ini +0 -0
  604. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/nomaster-threads-1worker.ini +0 -0
  605. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/deadlocks/sitecustomize.py +0 -0
  606. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/decoratortest.py +0 -0
  607. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/fileserve_async.py +0 -0
  608. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/gevent_spool.py +0 -0
  609. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/gh-deadlocks.sh +0 -0
  610. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/gh-python.sh +0 -0
  611. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/gh-rack.sh +0 -0
  612. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/gh-shared.sh +0 -0
  613. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/grunter.py +0 -0
  614. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/iobound_async.py +0 -0
  615. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/iobound_async_unix.py +0 -0
  616. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/iobound_green.py +0 -0
  617. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/logger.py +0 -0
  618. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/mako_ugreen.py +0 -0
  619. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/mulefunc.py +0 -0
  620. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/multiapp.txt +0 -0
  621. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/myadmin.py +0 -0
  622. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/pgbound_async.py +0 -0
  623. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/picazzo.py +0 -0
  624. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/psycogreen_green.py +0 -0
  625. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/psycopg2_green.py +0 -0
  626. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/pump.py +0 -0
  627. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/queue.py +0 -0
  628. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/refcount.py +0 -0
  629. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/rpc.lua +0 -0
  630. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/rpc.py +0 -0
  631. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/runningthread.py +0 -0
  632. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sendchunked.py +0 -0
  633. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sharedarea.py +0 -0
  634. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sig.lua +0 -0
  635. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/signals.py +0 -0
  636. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sigwait.py +0 -0
  637. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sleeping_async.py +0 -0
  638. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sleeping_green.py +0 -0
  639. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/sleepthreadasync.py +0 -0
  640. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/slow.py +0 -0
  641. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/spoolme.py +0 -0
  642. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/static/test.txt +0 -0
  643. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/static/test2.txt +0 -0
  644. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/staticfile.py +0 -0
  645. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/streamer.psgi +0 -0
  646. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/t/static.pl +0 -0
  647. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/templates/queue.html +0 -0
  648. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testapp.py +0 -0
  649. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testfilewrapper.py +0 -0
  650. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testgevent.py +0 -0
  651. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testpy3.py +0 -0
  652. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testrpc.py +0 -0
  653. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testsignals.py +0 -0
  654. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testworkers.py +0 -0
  655. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/testyieldnone.py +0 -0
  656. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/threads.py +0 -0
  657. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/travis.sh +0 -0
  658. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/ugevent.py +0 -0
  659. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/web3.py +0 -0
  660. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets.py +0 -0
  661. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_chat.pl +0 -0
  662. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_chat.py +0 -0
  663. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_chat_async.py +0 -0
  664. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_chat_asyncio.py +0 -0
  665. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_echo.lua +0 -0
  666. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_echo.pl +0 -0
  667. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_echo.py +0 -0
  668. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/websockets_echo.ru +0 -0
  669. {uwsgi-2.0.21 → uwsgi-2.0.22}/tests/werkzeug_app.py +0 -0
  670. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgi_main.c +0 -0
  671. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgidecorators.py +0 -0
  672. {uwsgi-2.0.21 → uwsgi-2.0.22}/uwsgidsl.rb +0 -0
  673. {uwsgi-2.0.21 → uwsgi-2.0.22}/valgrind/README +0 -0
  674. {uwsgi-2.0.21 → uwsgi-2.0.22}/valgrind/valgrind-generate-sups.sh +0 -0
  675. {uwsgi-2.0.21 → uwsgi-2.0.22}/vassals/broodlord.ini +0 -0
  676. {uwsgi-2.0.21 → uwsgi-2.0.22}/vassals/cc.ini +0 -0
  677. {uwsgi-2.0.21 → uwsgi-2.0.22}/vassals/multi.xml +0 -0
  678. {uwsgi-2.0.21 → uwsgi-2.0.22}/vhosttest/flask001/app1.py +0 -0
  679. {uwsgi-2.0.21 → uwsgi-2.0.22}/vhosttest/flask002/app2.py +0 -0
  680. {uwsgi-2.0.21 → uwsgi-2.0.22}/vhosttest/flask003/app3.py +0 -0
  681. {uwsgi-2.0.21 → uwsgi-2.0.22}/vhosttest/flask004/app4.py +0 -0
  682. {uwsgi-2.0.21 → uwsgi-2.0.22}/vhosttest/flask005/app5.py +0 -0
  683. {uwsgi-2.0.21 → 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-18.04
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.6-dev \
22
+ sudo apt install --no-install-recommends -qqyf python3.8-dev \
19
23
  libxml2-dev libpcre3-dev libcap2-dev \
20
- php7.2-dev libphp7.2-embed libargon2-0-dev libsodium-dev \
21
- liblua5.1-0-dev ruby2.5-dev \
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-8-jdk libgloox-dev gccgo \
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.2 /usr/bin/python3 uwsgiconfig.py --build travis
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
@@ -9,16 +9,14 @@ on:
9
9
  jobs:
10
10
  python:
11
11
 
12
- runs-on: ubuntu-18.04
12
+ runs-on: ubuntu-20.04
13
13
  strategy:
14
14
  matrix:
15
15
  python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
16
16
  test-suite: [unittest, python, deadlocks]
17
17
  steps:
18
18
  - name: Add deadnakes ppa
19
- run: |
20
- sudo apt install -qqyf software-properties-common
21
- sudo add-apt-repository ppa:deadsnakes/ppa -y
19
+ run: sudo add-apt-repository ppa:deadsnakes/ppa -y
22
20
  - name: Install dependencies
23
21
  run: |
24
22
  sudo apt update -qq
@@ -26,7 +24,7 @@ jobs:
26
24
  libpcre3-dev libjansson-dev libcap2-dev \
27
25
  curl check
28
26
  - name: Install distutils
29
- if: contains(fromJson('["3.8","3.9","3.10","3.11"]'), matrix.python-version)
27
+ if: contains(fromJson('["3.6","3.7","3.8","3.9","3.10","3.11"]'), matrix.python-version)
30
28
  run: |
31
29
  sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-distutils \
32
30
  - uses: actions/checkout@v2
@@ -52,20 +50,16 @@ jobs:
52
50
 
53
51
  rack:
54
52
 
55
- runs-on: ubuntu-18.04
53
+ runs-on: ubuntu-20.04
56
54
  strategy:
57
55
  matrix:
58
- rack-version: ["251"]
56
+ rack-version: ["270"]
59
57
  steps:
60
- - name: Add deadnakes ppa
61
- run: |
62
- sudo apt install -qqyf software-properties-common
63
- sudo add-apt-repository ppa:deadsnakes/ppa -y
64
58
  - name: Install dependencies
65
59
  run: |
66
60
  sudo apt update -qq
67
61
  sudo apt install --no-install-recommends -qqyf python3-dev \
68
- libpcre3-dev libjansson-dev libcap2-dev \
62
+ libpcre3-dev libjansson-dev libcap2-dev ruby2.7-dev \
69
63
  curl check
70
64
  - uses: actions/checkout@v2
71
65
  - name: Run unit tests
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: uWSGI
3
- Version: 2.0.21
3
+ Version: 2.0.22
4
4
  Summary: The uWSGI server
5
5
  Home-page: https://uwsgi-docs.readthedocs.io/en/latest/
6
6
  Author: Unbit
@@ -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
- // oops
319
+ /* invalid or empty */
321
320
  return HTTP_INTERNAL_SERVER_ERROR;
322
321
  }
323
-
324
322
  backend->worker->s->read += len;
325
-
326
- if (len >= sizeof(buffer)-1) {
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
- // oops
338
- return HTTP_INTERNAL_SERVER_ERROR;
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
- // start parsing headers;
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
- // invalid header skip
361
- if (!value) continue;
362
- *value = '\0';
363
- ++value;
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
@@ -197,6 +197,8 @@ void uwsgi_init_default() {
197
197
  uwsgi_master_fifo_prepare();
198
198
 
199
199
  uwsgi.notify_socket_fd = -1;
200
+
201
+ uwsgi.harakiri_graceful_signal = SIGTERM;
200
202
  }
201
203
 
202
204
  void uwsgi_setup_reload() {
@@ -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
- /* first check for harakiri */
188
- if (uwsgi.workers[i].harakiri > 0) {
189
- if (uwsgi.workers[i].harakiri < (time_t) uwsgi.current_time) {
190
- trigger_harakiri(i);
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
- /* then user-defined harakiri */
195
- if (uwsgi.workers[i].user_harakiri > 0) {
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
@@ -1561,7 +1561,10 @@ void uwsgi_register_cheaper_algo(char *name, int (*func) (int)) {
1561
1561
 
1562
1562
  void trigger_harakiri(int i) {
1563
1563
  int j;
1564
- uwsgi_log_verbose("*** HARAKIRI ON WORKER %d (pid: %d, try: %d) ***\n", i, uwsgi.workers[i].pid, uwsgi.workers[i].pending_harakiri + 1);
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");
1565
1568
  if (uwsgi.harakiri_verbose) {
1566
1569
  #ifdef __linux__
1567
1570
  int proc_file;
@@ -1610,7 +1613,11 @@ void trigger_harakiri(int i) {
1610
1613
  }
1611
1614
 
1612
1615
  uwsgi_dump_worker(i, "HARAKIRI");
1613
- kill(uwsgi.workers[i].pid, SIGKILL);
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
+ }
1614
1621
  if (!uwsgi.workers[i].pending_harakiri)
1615
1622
  uwsgi.workers[i].harakiri_count++;
1616
1623
  uwsgi.workers[i].pending_harakiri++;
@@ -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},
@@ -32,17 +32,20 @@ elif operating_system.startswith('cygwin'):
32
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"']
33
33
  JVM_LIBPATH = ['-L"/cygdrive/c/Program Files/Java/jdk1.7.0_17/jre/bin/server"']
34
34
  else:
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)
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)
36
36
  for jvm in known_jvms:
37
- if os.path.exists(jvm + '/include'):
38
- JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
39
- JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
40
- break
41
- if os.path.exists("%s-%s/include" % (jvm, arch)):
42
- jvm = "%s-%s" % (jvm, arch)
43
- JVM_INCPATH = ["-I%s/include/" % jvm, "-I%s/include/%s" % (jvm, operating_system)]
44
- JVM_LIBPATH = ["-L%s/jre/lib/%s/server" % (jvm, arch)]
45
- break
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
46
49
 
47
50
  try:
48
51
  JVM_INCPATH = ['-I"' + os.environ['UWSGICONFIG_JVM_INCPATH'] + '"']
@@ -607,7 +607,11 @@ static void activate_user_config(const char *filename, const char *doc_root, siz
607
607
  static int php_uwsgi_startup(sapi_module_struct *sapi_module)
608
608
  {
609
609
 
610
+ #if ((PHP_MAJOR_VERSION >= 8) && (PHP_MINOR_VERSION >= 2))
611
+ if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry)==FAILURE) {
612
+ #else
610
613
  if (php_module_startup(&uwsgi_sapi_module, &uwsgi_module_entry, 1)==FAILURE) {
614
+ #endif
611
615
  return FAILURE;
612
616
  } else {
613
617
  return SUCCESS;
@@ -554,7 +554,7 @@ void init_uwsgi_vars() {
554
554
  #ifdef HAS_NO_ERRORS_IN_PyFile_FromFd
555
555
  PyObject *new_stdprint = PyFile_FromFd(2, NULL, "w", _IOLBF, NULL, NULL, 0);
556
556
  #else
557
- PyObject *new_stdprint = PyFile_FromFd(2, NULL, "w", _IOLBF, NULL, NULL, NULL, 0);
557
+ PyObject *new_stdprint = PyFile_FromFd(2, NULL, "w", _IOLBF, NULL, "backslashreplace", NULL, 0);
558
558
  #endif
559
559
  PyDict_SetItemString(pysys_dict, "stdout", new_stdprint);
560
560
  PyDict_SetItemString(pysys_dict, "__stdout__", new_stdprint);