summaryrefslogtreecommitdiff
path: root/src/core/ngx_string.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-12-27 15:31:36 +0000
committerJonathan Kolb <jon@b0g.us>2007-12-27 15:31:36 +0000
commit37acebc32d2a50b11537edd920af3721b93a1ecc (patch)
tree5338ea420eec0818d8e123a91973ee90308693f5 /src/core/ngx_string.c
parent73cd30361418f277067c128cedee4990aa72840b (diff)
downloadnginx-0.6.23.tar.gz
Changes with nginx 0.6.23 27 Dec 2007v0.6.23
*) Change: the "off" parameter in the "ssl_session_cache" directive; now this is default parameter. *) Change: the "open_file_cache_retest" directive was renamed to the "open_file_cache_valid". *) Feature: the "open_file_cache_min_uses" directive. *) Feature: the ngx_http_gzip_static_module. *) Feature: the "gzip_disable" directive. *) Feature: the "memcached_pass" directive may be used inside the "if" block. *) Bugfix: a segmentation fault occurred in worker process, if the "memcached_pass" and "if" directives were used in the same location. *) Bugfix: if a "satisfy_any on" directive was used and not all access and auth modules directives were set, then other given access and auth directives were not tested; *) Bugfix: regex parameters in a "valid_referers" directive were not inherited from previous level. *) Bugfix: a "post_action" directive did run if a request was completed with 499 status code. *) Bugfix: optimization of 16K buffer usage in a SSL connection. Thanks to Ben Maurer. *) Bugfix: the STARTTLS in SMTP mode did not work. Thanks to Oleg Motienko. *) Bugfix: in HTTPS mode requests might fail with the "bad write retry" error; bug appeared in 0.5.13.
Diffstat (limited to 'src/core/ngx_string.c')
-rw-r--r--src/core/ngx_string.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index f878c559f..d9a5480da 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -63,6 +63,7 @@ ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src)
* %V ngx_str_t *
* %v ngx_variable_value_t *
* %s null-terminated string
+ * %*s length and string
* %Z '\0'
* %N '\n'
* %c char
@@ -112,7 +113,7 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
* but icc issues the warning
*/
int d;
- size_t len;
+ size_t len, slen;
uint32_t ui32;
int64_t i64;
uint64_t ui64;
@@ -146,6 +147,7 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
sign = 1;
hexadecimal = 0;
max_width = 0;
+ slen = 0;
p = temp + NGX_INT64_LEN;
@@ -179,6 +181,11 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
fmt++;
continue;
+ case '*':
+ slen = va_arg(args, u_int);
+ fmt++;
+ continue;
+
default:
break;
}
@@ -214,9 +221,15 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
case 's':
p = va_arg(args, u_char *);
- while (*p && buf < last) {
- *buf++ = *p++;
+ if (slen == 0) {
+ while (*p && buf < last) {
+ *buf++ = *p++;
+ }
+
+ } else {
+ buf = ngx_cpymem(buf, p, slen);
}
+
fmt++;
continue;