summaryrefslogtreecommitdiff
path: root/src/http_etag.c
Commit message (Collapse)AuthorAgeFilesLines
* [multiple] use buffer_append_char()Glenn Strauss2022-05-111-4/+7
|
* [multiple] reduce redundant NULL buffer checksGlenn Strauss2021-08-271-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit is a large set of code changes and results in removal of hundreds, perhaps thousands, of CPU instructions, a portion of which are on hot code paths. Most (buffer *) used by lighttpd are not NULL, especially since buffers were inlined into numerous larger structs such as request_st and chunk. In the small number of instances where that is not the case, a NULL check is often performed earlier in a function where that buffer is later used with a buffer_* func. In the handful of cases that remained, a NULL check was added, e.g. with r->http_host and r->conf.server_tag. - check for empty strings at config time and set value to NULL if blank string will be ignored at runtime; at runtime, simple pointer check for NULL can be used to check for a value that has been set and is not blank ("") - use buffer_is_blank() instead of buffer_string_is_empty(), and use buffer_is_unset() instead of buffer_is_empty(), where buffer is known not to be NULL so that NULL check can be skipped - use buffer_clen() instead of buffer_string_length() when buffer is known not to be NULL (to avoid NULL check at runtime) - use buffer_truncate() instead of buffer_string_set_length() to truncate string, and use buffer_extend() to extend Examples where buffer known not to be NULL: - cpv->v.b from config_plugin_values_init is not NULL if T_CONFIG_BOOL (though we might set it to NULL if buffer_is_blank(cpv->v.b)) - address of buffer is arg (&foo) (compiler optimizer detects this in most, but not all, cases) - buffer is checked for NULL earlier in func - buffer is accessed in same scope without a NULL check (e.g. b->ptr) internal behavior change: callers must not pass a NULL buffer to some funcs. - buffer_init_buffer() requires non-null args - buffer_copy_buffer() requires non-null args - buffer_append_string_buffer() requires non-null args - buffer_string_space() requires non-null arg
* [core] comment out unused part of http_etag_remixGlenn Strauss2021-08-271-0/+4
| | | | | | note: etag buffer etag->ptr might be NULL (etag->used = etag->sze = 0) so buffer will need to be extended, not truncated, in that case. buffer_string_set_length() is typically used to truncate strings.
* [multiple] etag.[ch] -> http_etag.[ch]; better impGlenn Strauss2020-12-251-0/+86
more efficient implementation of HTTP ETag generation and comparison modify dekhash() to take hash value to allow for incremental hashing