Compare commits

...

31 Commits

Author SHA1 Message Date
ce803e8a94 bumped version number to 1.0.11.28. 2012-03-25 15:47:30 +08:00
843fd34df6 use the best compress level for gzip. 2012-03-22 16:09:44 +08:00
39cea1cbb3 upgraded ngx_lua to 0.5.0rc21. 2012-03-22 15:38:11 +08:00
b4f3bd982f improved the upstream_pipelining patch a bit. 2012-03-21 21:44:15 +08:00
fcb85fb288 now we apply the upstream_pipelining patch to the nginx core by default. 2012-03-21 21:29:32 +08:00
9a756394cc added nginx-1.0.11-upstream_pipelining.patch 2012-03-21 21:27:01 +08:00
922f49f734 upgraded ngx_lua to 0.5.0rc20. 2012-03-21 21:12:19 +08:00
99c37ea419 upgraded ngx_echo to 0.38rc2. 2012-03-21 20:52:27 +08:00
767863f552 upgraded ngx_srcache to 0.13rc6. 2012-03-16 11:41:46 +08:00
45eb5fd21d added null_character_fixes patch to nginx 1.1.15. 2012-03-16 11:27:48 +08:00
926f75812b renamed the null character fixes patch. 2012-03-16 10:45:09 +08:00
0fed5de57c bumped version to 1.0.11.25. 2012-03-16 10:39:14 +08:00
deff21617c security: applied the null-character-fixes patch from the mainstream. The bug did result in a disclosure of previously freed memory if upstream server returned specially crafted response, potentially exposing sensitive information. 2012-03-16 10:37:53 +08:00
2d3383ee54 upgraded ngx_srcache to 0.13rc5. 2012-03-15 17:39:45 +08:00
f2f8a02aa9 upgraded ngx_lua to 0.5.0rc19. 2012-03-15 17:32:22 +08:00
d10a7ece5c upgraded ngx_srcache to 0.13rc4. 2012-03-15 15:53:47 +08:00
b01704d715 upgraded ngx_lua to 0.5.0rc18. 2012-03-12 21:31:12 +08:00
fa6683d2d0 upgraded lua-resty-redis to 0.08. 2012-03-11 18:50:52 +08:00
746320740a bugfix: the hotfix patch #4 for lua 5.1.4 has been removed from the official lua.org site. now we mirror it in my agentzh.org site. thanks damajor (Xav) for reporting this issue in github issue #10. 2012-03-11 17:41:07 +08:00
627f55d5d0 upgraded ngx_lua to 0.5.0rc17. 2012-03-06 22:47:48 +08:00
4579111c27 upgraded lua-resty-string to 0.05. 2012-03-05 23:09:20 +08:00
c9d5094560 upgraded lua-resty-redis to 0.07. 2012-03-05 20:35:17 +08:00
de51f31cda upgraded lua-redis-parser to 0.09rc7. 2012-03-01 15:50:25 +08:00
a4a3c09c76 upgraded ngx_redis2 to 0.08rc4. 2012-03-01 15:01:18 +08:00
ec23d93c0d no longer specify -DLUAJIT_USE_VALGRIND when --with-debug is specified. also upgraded lua-resty-* to their latest versions. 2012-02-29 15:16:10 +08:00
f459d71013 raised the default NGX_HTTP_MAX_SUBREQUESTS to 200, in sync with the official repository. 2012-02-29 11:30:45 +08:00
367a5d8c5f bundle new components lua-resty-mysql, lua-resty-upload, and lua-resty-string, which are enabled by default. also added options --without-lua_resty_mysql, --without-lua_resty_upload, and --without-lua_resty_string to ./configure for disabling them. 2012-02-28 22:34:40 +08:00
dfe629a607 updated tests to reflect recent changes. 2012-02-28 22:16:37 +08:00
d41cb7132c bundle new component lua-resty-redis which is enabled by default. also added option --without-lua_resty_redis to ./configure for disabling it. 2012-02-28 22:15:29 +08:00
7c210171d1 bundle new component lua-resty-memcached which is enabled by default. also added option --without-lua_resty_memcached to ./configure for disabling it. also upgraded ngx_lua to 0.5.0rc16. 2012-02-28 22:05:01 +08:00
51c12f72d6 now we apply the official hotfix #1 patch for luajit 2.0.0 beta9. 2012-02-24 14:49:55 +08:00
9 changed files with 849 additions and 216 deletions

View File

@ -7,7 +7,7 @@
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 100
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

View File

@ -0,0 +1,32 @@
diff -ur nginx-1.0.11/src/http/ngx_http_upstream.c nginx-1.0.11-patched/src/http/ngx_http_upstream.c
--- nginx-1.0.11/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800
+++ nginx-1.0.11-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800
@@ -1385,6 +1385,8 @@
/* rc == NGX_OK */
+ u->request_all_sent = 1;
+
if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
if (ngx_tcp_push(c->fd) == NGX_ERROR) {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@@ -1451,7 +1453,7 @@
#endif
- if (u->header_sent) {
+ if (u->request_all_sent) {
u->write_event_handler = ngx_http_upstream_dummy_handler;
(void) ngx_handle_write_event(c->write, 0);
diff -ur nginx-1.0.11/src/http/ngx_http_upstream.h nginx-1.0.11-patched/src/http/ngx_http_upstream.h
--- nginx-1.0.11/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800
+++ nginx-1.0.11-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800
@@ -313,6 +313,7 @@
unsigned buffering:1;
unsigned request_sent:1;
+ unsigned request_all_sent:1;
unsigned header_sent:1;
};

View File

@ -7,7 +7,7 @@
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 100
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

File diff suppressed because it is too large Load Diff

40
util/configure vendored
View File

@ -155,6 +155,21 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--without-lua_redis_parser') {
$resty_opts{no_lua_redis_parser} = 1;
} elsif ($opt eq '--without-lua_resty_memcached') {
$resty_opts{no_lua_resty_memcached} = 1;
} elsif ($opt eq '--without-lua_resty_redis') {
$resty_opts{no_lua_resty_redis} = 1;
} elsif ($opt eq '--without-lua_resty_mysql') {
$resty_opts{no_lua_resty_mysql} = 1;
} elsif ($opt eq '--without-lua_resty_upload') {
$resty_opts{no_lua_resty_upload} = 1;
} elsif ($opt eq '--without-lua_resty_string') {
$resty_opts{no_lua_resty_string} = 1;
} elsif ($opt eq '--without-lua_rds_parser') {
$resty_opts{no_lua_rds_parser} = 1;
@ -495,8 +510,8 @@ _END_
my $extra_opts = ' TARGET_STRIP=@:';
if ($opts->{debug}) {
$extra_opts = q{ CCDEBUG=-g Q= XCFLAGS='-DLUAJIT_USE_VALGRIND}
.q{ -DLUA_USE_APICHECK -DLUA_USE_ASSERT'};
$extra_opts = q{ CCDEBUG=-g Q= XCFLAGS='-DLUA_USE_APICHECK}
.q{ -DLUA_USE_ASSERT'};
}
if ($platform =~ /bsd/i) {
@ -748,6 +763,22 @@ _EOC_
push @make_install_cmds, "cd $root_dir/build/$dir && " .
"\$(MAKE) install$extra_opts";
}
for my $key (qw(memcached redis mysql string upload)) {
unless ($opts->{"no_lua_resty_$key"}) {
my $name = "lua-resty-$key";
my $dir = auto_complete $name;
if (!defined $dir) {
die "No $name found";
}
my $extra_opts = " DESTDIR=\$(DESTDIR) LUA_LIB_DIR=$lualib_prefix"
." INSTALL=$root_dir/build/install";
push @make_install_cmds, "cd $root_dir/build/$dir && " .
"\$(MAKE) install$extra_opts";
}
}
}
# prepare nginx configure line
@ -846,6 +877,11 @@ _EOC_
--without-lua_cjson disable the lua-cjson library
--without-lua_redis_parser disable the lua-redis-parser library
--without-lua_rds_parser disable the lua-rds-parser library
--without-lua_resty_memcached disable the lua-resty-memcached library
--without-lua_resty_redis disable the lua-resty-redis library
--without-lua_resty_mysql disable the lua-resty-mysql library
--without-lua_resty_upload disable the lua-resty-upload library
--without-lua_resty_string disable the lua-resty-string library
--without-lua51 disable the bundled Lua 5.1 interpreter
--with-lua51=PATH specify the external installation of Lua 5.1 by PATH

View File

@ -26,6 +26,9 @@ cd nginx-$ver || exit 1
# patch the patch
echo "INFO: applying the upstream-pipelining patch"
patch -p1 < $root/patches/nginx-$main_ver-upstream_pipelining.patch || exit 1
cp $root/patches/nginx-$main_ver-server_header.patch server_header.patch || exit 1
sed $"s/NGINX_VERSION \".unknown\"/NGINX_VERSION \".$minor_ver\"/" server_header.patch \
> server_header.patch.tmp && mv -f server_header.patch.tmp server_header.patch || exit 1
@ -57,6 +60,9 @@ patch -p1 < $root/patches/nginx-$main_ver-allow_request_body_updating.patch || e
patch -p1 < $root/patches/nginx-$main_ver-log_escape_non_ascii.patch || exit 1
echo "INFO: applying null-character-fixes patch"
patch -p0 < $root/patches/nginx-$main_ver-null_character_fixes.patch || exit 1
#patch -p1 < $root/patches/nginx-$main_ver-gzip_ok_invalid_read_fix.patch || exit 1
rm -f *.patch || exit 1
@ -70,7 +76,7 @@ sed $"s/NGINX_VERSION \".unknown/NGINX_VERSION \".$minor_ver/" \
|| exit 1
rm -rf no-pool-nginx-$ver
ver=0.38rc1
ver=0.38rc2
$root/util/get-tarball "http://github.com/agentzh/echo-nginx-module/tarball/v$ver" -O echo-nginx-module-$ver.tar.gz || exit 1
tar -xzf echo-nginx-module-$ver.tar.gz || exit 1
mv agentzh-echo-nginx-module-* echo-nginx-module-$ver || exit 1
@ -114,7 +120,7 @@ mv chaoslawful-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
#################################
ver=0.5.0rc15
ver=0.5.0rc21
$root/util/get-tarball "http://github.com/chaoslawful/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1
tar -xzf lua-nginx-module-$ver.tar.gz || exit 1
mv chaoslawful-lua-nginx-module-* ngx_lua-$ver || exit 1
@ -135,7 +141,7 @@ mv agentzh-memc-nginx-module-* memc-nginx-module-$ver || exit 1
#################################
ver=0.13rc3
ver=0.13rc6
$root/util/get-tarball "http://github.com/agentzh/srcache-nginx-module/tarball/v$ver" -O srcache-nginx-module-$ver.tar.gz || exit 1
tar -xzf srcache-nginx-module-$ver.tar.gz || exit 1
mv agentzh-srcache-nginx-module-* srcache-nginx-module-$ver || exit 1
@ -192,7 +198,7 @@ mv FRiCKLE-ngx_coolkit-* ngx_coolkit-$ver || exit 1
#################################
ver=0.08rc3
ver=0.08rc4
$root/util/get-tarball "http://github.com/agentzh/redis2-nginx-module/tarball/v$ver" -O redis2-nginx-module-$ver.tar.gz || exit 1
tar -xzf redis2-nginx-module-$ver.tar.gz || exit 1
mv agentzh-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1
@ -203,7 +209,7 @@ ver=5.1.4
$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
tar -xzf lua-$ver.tar.gz || exit 1
$root/util/get-tarball "http://www.lua.org/ftp/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1
$root/util/get-tarball "http://agentzh.org/misc/nginx/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1
cd lua-$ver/src || exit 1
patch -p0 < ../../patch-lua-$ver-4 || exit 1
@ -224,9 +230,10 @@ $root/util/get-tarball "http://luajit.org/download/LuaJIT-$ver.tar.gz" -O "LuaJI
tar -xzf LuaJIT-$ver.tar.gz || exit 1
cd LuaJIT-$ver || exit 1;
#$root/util/get-tarball http://luajit.org/download/beta8_hotfix1.patch -O beta8_hotfix1.patch
#patch -p1 < beta8_hotfix1.patch || exit 1
#rm beta8_hotfix1.patch || exit 1
$root/util/get-tarball http://luajit.org/download/beta9_hotfix1.patch -O beta9_hotfix1.patch
patch -p1 < beta9_hotfix1.patch || exit 1
rm beta9_hotfix1.patch || exit 1
cp $root/misc/unwind-generic.h ./unwind.h || exit 1
cd ..
@ -241,7 +248,7 @@ cd ..
#################################
ver=0.09rc6
ver=0.09rc7
$root/util/get-tarball "http://github.com/agentzh/lua-redis-parser/tarball/v$ver" -O "lua-redis-parser-$ver.tar.gz" || exit 1
tar -xzf lua-redis-parser-$ver.tar.gz || exit 1
mv agentzh-lua-redis-parser-* lua-redis-parser-$ver || exit 1
@ -255,6 +262,41 @@ mv agentzh-lua-rds-parser-* lua-rds-parser-$ver || exit 1
#################################
ver=0.06
$root/util/get-tarball "http://github.com/agentzh/lua-resty-memcached/tarball/v$ver" -O "lua-resty-memcached-$ver.tar.gz" || exit 1
tar -xzf lua-resty-memcached-$ver.tar.gz || exit 1
mv agentzh-lua-resty-memcached-* lua-resty-memcached-$ver || exit 1
#################################
ver=0.08
$root/util/get-tarball "http://github.com/agentzh/lua-resty-redis/tarball/v$ver" -O "lua-resty-redis-$ver.tar.gz" || exit 1
tar -xzf lua-resty-redis-$ver.tar.gz || exit 1
mv agentzh-lua-resty-redis-* lua-resty-redis-$ver || exit 1
#################################
ver=0.06
$root/util/get-tarball "http://github.com/agentzh/lua-resty-mysql/tarball/v$ver" -O "lua-resty-mysql-$ver.tar.gz" || exit 1
tar -xzf lua-resty-mysql-$ver.tar.gz || exit 1
mv agentzh-lua-resty-mysql-* lua-resty-mysql-$ver || exit 1
#################################
ver=0.02
$root/util/get-tarball "http://github.com/agentzh/lua-resty-upload/tarball/v$ver" -O "lua-resty-upload-$ver.tar.gz" || exit 1
tar -xzf lua-resty-upload-$ver.tar.gz || exit 1
mv agentzh-lua-resty-upload-* lua-resty-upload-$ver || exit 1
#################################
ver=0.05
$root/util/get-tarball "http://github.com/agentzh/lua-resty-string/tarball/v$ver" -O "lua-resty-string-$ver.tar.gz" || exit 1
tar -xzf lua-resty-string-$ver.tar.gz || exit 1
mv agentzh-lua-resty-string-* lua-resty-string-$ver || exit 1
#################################
rm *.tar.gz
cd ..
@ -264,5 +306,6 @@ cp $root/util/install bundle/
cd $root
tar czf $name.tar.gz $name
tar cf $name.tar $name
gzip -f --best $name.tar

View File

@ -1,7 +1,7 @@
#!/bin/bash
main_ver=1.0.11
minor_ver=15
minor_ver=28
version=$main_ver.$minor_ver
echo $version