Mercurial > hg > nginx
changeset 4156:67a4654ba7d9
Using strtod() instead of atofp() to support a lot of digits after dot in
"start" parameter value.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 30 Sep 2011 09:18:28 +0000 |
parents | d9636bf3f159 |
children | 9d59a8eda373 |
files | src/http/modules/ngx_http_mp4_module.c |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_mp4_module.c Thu Sep 29 15:19:36 2011 +0000 +++ b/src/http/modules/ngx_http_mp4_module.c Fri Sep 30 09:18:28 2011 +0000 @@ -499,9 +499,16 @@ if (ngx_http_arg(r, (u_char *) "start", 5, &value) == NGX_OK) { - start = ngx_atofp(value.data, value.len, 3); - - if (start != NGX_ERROR) { + /* + * A Flash player may send start value with a lot of digits + * after dot so strtod() is used instead of atofp(). NaNs and + * infinities become negative numbers after (int) conversion. + */ + + ngx_set_errno(0); + start = (int) (strtod((char *) value.data, NULL) * 1000); + + if (ngx_errno == 0 && start >= 0) { r->allow_ranges = 0; mp4 = ngx_pcalloc(r->pool, sizeof(ngx_http_mp4_file_t));