comparison src/core/ngx_string.c @ 358:9121a0a91f47 NGINX_0_6_23

nginx 0.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.
author Igor Sysoev <http://sysoev.ru>
date Thu, 27 Dec 2007 00:00:00 +0300
parents b743d290eb3b
children a39aab45a53f
comparison
equal deleted inserted replaced
357:16d557a75356 358:9121a0a91f47
61 * %r rlim_t 61 * %r rlim_t
62 * %p void * 62 * %p void *
63 * %V ngx_str_t * 63 * %V ngx_str_t *
64 * %v ngx_variable_value_t * 64 * %v ngx_variable_value_t *
65 * %s null-terminated string 65 * %s null-terminated string
66 * %*s length and string
66 * %Z '\0' 67 * %Z '\0'
67 * %N '\n' 68 * %N '\n'
68 * %c char 69 * %c char
69 * %% % 70 * %% %
70 * 71 *
110 /* 111 /*
111 * really we need temp[NGX_INT64_LEN] only, 112 * really we need temp[NGX_INT64_LEN] only,
112 * but icc issues the warning 113 * but icc issues the warning
113 */ 114 */
114 int d; 115 int d;
115 size_t len; 116 size_t len, slen;
116 uint32_t ui32; 117 uint32_t ui32;
117 int64_t i64; 118 int64_t i64;
118 uint64_t ui64; 119 uint64_t ui64;
119 ngx_msec_t ms; 120 ngx_msec_t ms;
120 ngx_uint_t width, sign, hexadecimal, max_width; 121 ngx_uint_t width, sign, hexadecimal, max_width;
144 zero = (u_char) ((*++fmt == '0') ? '0' : ' '); 145 zero = (u_char) ((*++fmt == '0') ? '0' : ' ');
145 width = 0; 146 width = 0;
146 sign = 1; 147 sign = 1;
147 hexadecimal = 0; 148 hexadecimal = 0;
148 max_width = 0; 149 max_width = 0;
150 slen = 0;
149 151
150 p = temp + NGX_INT64_LEN; 152 p = temp + NGX_INT64_LEN;
151 153
152 while (*fmt >= '0' && *fmt <= '9') { 154 while (*fmt >= '0' && *fmt <= '9') {
153 width = width * 10 + *fmt++ - '0'; 155 width = width * 10 + *fmt++ - '0';
177 hexadecimal = 1; 179 hexadecimal = 1;
178 sign = 0; 180 sign = 0;
179 fmt++; 181 fmt++;
180 continue; 182 continue;
181 183
184 case '*':
185 slen = va_arg(args, u_int);
186 fmt++;
187 continue;
188
182 default: 189 default:
183 break; 190 break;
184 } 191 }
185 192
186 break; 193 break;
212 continue; 219 continue;
213 220
214 case 's': 221 case 's':
215 p = va_arg(args, u_char *); 222 p = va_arg(args, u_char *);
216 223
217 while (*p && buf < last) { 224 if (slen == 0) {
218 *buf++ = *p++; 225 while (*p && buf < last) {
219 } 226 *buf++ = *p++;
227 }
228
229 } else {
230 buf = ngx_cpymem(buf, p, slen);
231 }
232
220 fmt++; 233 fmt++;
221 234
222 continue; 235 continue;
223 236
224 case 'O': 237 case 'O':