understanding ngx_str_t structure
arut at nginx.com
Fri Sep 27 10:14:14 UTC 2019
On Fri, Sep 27, 2019 at 05:44:09AM -0400, astre wrote:
> I trying to print the requested URL path. For that I came across the "uri"
> member which is of type ngx_str_t) under ngx_http_request_t structure. When
> I print the "uri" using ngx_log_debug1 (ngx_log_debug1(NGX_LOG_DEBUG_HTTP,
> log, 0, "%s", r->uri.data)) I see some extra data printed.
> For eg. when http://localhost/test is requested, "/test HTTP/1.1 Host" is
> In my understanding "uri.data" should have contained only "/test". The
> "uri.len" correctly shows the length as 5. The "data" member is unsigned
> char *data so while extracting the actual string do we need to consider the
> length in ngx_str_t ?
The %s format suggests that the string is null-terminated, which is not the
case for r->uri.data. There's a special format %V for printing ngx_str_t:
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "%V", &r->uri);
For more information on ngx_str_t, see the dev guide:
> Posted at Nginx Forum: https://forum.nginx.org/read.php?2,285729,285729#msg-285729
> nginx mailing list
> nginx at nginx.org
More information about the nginx