add nohead param to skip over the cache check with HEAD method
This commit is contained in:
parent
44f78e9e76
commit
09b1b8bc7f
|
@ -2530,37 +2530,41 @@ static switch_status_t locate_url_file(http_file_context_t *context, const char
|
||||||
|
|
||||||
lock_file(context, SWITCH_TRUE);
|
lock_file(context, SWITCH_TRUE);
|
||||||
|
|
||||||
if ((status = fetch_cache_data(context, url, &headers, NULL)) != SWITCH_STATUS_SUCCESS) {
|
if (!context->url_params || !switch_true(switch_event_get_header(context->url_params, "nohead"))) {
|
||||||
if (status == SWITCH_STATUS_NOTFOUND) {
|
if ((status = fetch_cache_data(context, url, &headers, NULL)) != SWITCH_STATUS_SUCCESS) {
|
||||||
unreachable = 2;
|
if (status == SWITCH_STATUS_NOTFOUND) {
|
||||||
if (now - context->expires < globals.not_found_expires) {
|
unreachable = 2;
|
||||||
|
if (now - context->expires < globals.not_found_expires) {
|
||||||
|
switch_goto_status(SWITCH_STATUS_SUCCESS, end);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unreachable = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (switch_file_exists(context->cache_file, context->pool) != SWITCH_STATUS_SUCCESS && unreachable) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File at url [%s] is unreachable!\n", url);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!unreachable && !zstr(context->metadata)) {
|
||||||
|
metadata = switch_core_sprintf(context->pool, "%s:%s:%s:%s",
|
||||||
|
url,
|
||||||
|
switch_event_get_header_nil(headers, "last-modified"),
|
||||||
|
switch_event_get_header_nil(headers, "etag"),
|
||||||
|
switch_event_get_header_nil(headers, "content-length")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!strcmp(metadata, context->metadata)) {
|
||||||
|
write_meta_file(context, metadata, headers);
|
||||||
switch_goto_status(SWITCH_STATUS_SUCCESS, end);
|
switch_goto_status(SWITCH_STATUS_SUCCESS, end);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
unreachable = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch_event_destroy(&headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (switch_file_exists(context->cache_file, context->pool) != SWITCH_STATUS_SUCCESS && unreachable) {
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File at url [%s] is unreachable!\n", url);
|
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!unreachable && !zstr(context->metadata)) {
|
|
||||||
metadata = switch_core_sprintf(context->pool, "%s:%s:%s:%s",
|
|
||||||
url,
|
|
||||||
switch_event_get_header_nil(headers, "last-modified"),
|
|
||||||
switch_event_get_header_nil(headers, "etag"),
|
|
||||||
switch_event_get_header_nil(headers, "content-length")
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!strcmp(metadata, context->metadata)) {
|
|
||||||
write_meta_file(context, metadata, headers);
|
|
||||||
switch_goto_status(SWITCH_STATUS_SUCCESS, end);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch_event_destroy(&headers);
|
|
||||||
fetch_cache_data(context, url, &headers, context->cache_file);
|
fetch_cache_data(context, url, &headers, context->cache_file);
|
||||||
metadata = switch_core_sprintf(context->pool, "%s:%s:%s:%s",
|
metadata = switch_core_sprintf(context->pool, "%s:%s:%s:%s",
|
||||||
url,
|
url,
|
||||||
|
|
Loading…
Reference in New Issue