aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testing/uwsgi/APKBUILD9
-rw-r--r--testing/uwsgi/lua-lock.patch71
2 files changed, 76 insertions, 4 deletions
diff --git a/testing/uwsgi/APKBUILD b/testing/uwsgi/APKBUILD
index ee07b4d340..3a6a0c64b8 100644
--- a/testing/uwsgi/APKBUILD
+++ b/testing/uwsgi/APKBUILD
@@ -2,14 +2,14 @@
# Maintainer:
pkgname=uwsgi
pkgver=1.4.3
-pkgrel=0
+pkgrel=1
pkgdesc="uWSGI application container server"
url=http://projects.unbit.it/uwsgi/
arch=all
license=GPL-2
-makedepends="linux-headers lua-dev python python-dev"
+makedepends="linux-headers lua-dev python python-dev zeromq-dev"
subpackages="uwsgi-lua uwsgi-python:py"
-source="http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz futimes.patch include-sched.patch"
+source="http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz futimes.patch include-sched.patch lua-lock.patch"
_builddir=$srcdir/$pkgname-$pkgver
prepare() {
@@ -65,4 +65,5 @@ py() {
md5sums="98561cfdb93fb72ed68b7afb2ae4df3a uwsgi-1.4.3.tar.gz
2c9aeb5b2adf1fa45ef4ed6bda47236a futimes.patch
-02c43e001d5f44eb421079e17f9db003 include-sched.patch"
+02c43e001d5f44eb421079e17f9db003 include-sched.patch
+b791fb4994b0350992ffab3f939002ed lua-lock.patch"
diff --git a/testing/uwsgi/lua-lock.patch b/testing/uwsgi/lua-lock.patch
new file mode 100644
index 0000000000..059e8e9694
--- /dev/null
+++ b/testing/uwsgi/lua-lock.patch
@@ -0,0 +1,71 @@
+diff --git a/plugins/lua/lua_plugin.c b/plugins/lua/lua_plugin.c
+index 6a2a2a9..692c4ef 100644
+--- a/plugins/lua/lua_plugin.c
++++ b/plugins/lua/lua_plugin.c
+@@ -291,6 +291,57 @@ static int uwsgi_api_req_fd(lua_State *L) {
+ return 1;
+ }
+
++static int uwsgi_api_lock(lua_State *L) {
++
++ int lock_num = 0;
++
++ // the spooler cannot lock resources
++#ifdef UWSGI_SPOOLER
++ if (uwsgi.i_am_a_spooler) {
++ lua_pushstring(L, "The spooler cannot lock/unlock resources");
++ lua_error(L);
++ }
++#endif
++
++ if (lua_gettop(L) > 0) {
++ lock_num = lua_isnumber(L, 1) ? lua_tonumber(L, 1) : -1;
++ if (lock_num < 0 || lock_num > uwsgi.locks) {
++ lua_pushstring(L, "Invalid lock number");
++ lua_error(L);
++ }
++ }
++
++ uwsgi_lock(uwsgi.user_lock[lock_num]);
++
++ return 0;
++}
++
++
++static int uwsgi_api_unlock(lua_State *L) {
++
++ int lock_num = 0;
++
++ // the spooler cannot lock resources
++#ifdef UWSGI_SPOOLER
++ if (uwsgi.i_am_a_spooler) {
++ lua_pushstring(L, "The spooler cannot lock/unlock resources");
++ lua_error(L);
++ }
++#endif
++
++ if (lua_gettop(L) > 0) {
++ lock_num = lua_isnumber(L, 1) ? lua_tonumber(L, 1) : -1;
++ if (lock_num < 0 || lock_num > uwsgi.locks) {
++ lua_pushstring(L, "Invalid lock number");
++ lua_error(L);
++ }
++ }
++
++ uwsgi_unlock(uwsgi.user_lock[lock_num]);
++
++ return 0;
++}
++
+ static const luaL_reg uwsgi_api[] = {
+ {"log", uwsgi_api_log},
+ {"cl", uwsgi_api_cl},
+@@ -300,6 +351,8 @@ static const luaL_reg uwsgi_api[] = {
+ {"cache_set", uwsgi_api_cache_set},
+ {"register_signal", uwsgi_api_register_signal},
+ {"register_rpc", uwsgi_api_register_rpc},
++ {"lock", uwsgi_api_lock},
++ {"unlock", uwsgi_api_unlock},
+ {NULL, NULL}
+ };
+