aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-30 15:30:02 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-30 15:30:02 +0000
commitec3ba251f0761f8a3a06ccc34ef229079975421a (patch)
treee5a8e0409e6f7c1bcf940e8fc69565705a50582d /main
parentb7f4370ad85c3b46116edaee19306a0c1965dfb5 (diff)
Merged revisions 62414 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r62414 | russell | 2007-04-30 10:25:31 -0500 (Mon, 30 Apr 2007) | 4 lines When serving dynamic content, include a Cache-Control header to instruct the browsers to not store the resulting content. (issue #9621, reported by Pari, patch by me) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@62415 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/http.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/main/http.c b/main/http.c
index 5de435131..c69ac72ff 100644
--- a/main/http.c
+++ b/main/http.c
@@ -274,6 +274,7 @@ static struct ast_http_uri staticuri = {
.description = "Asterisk HTTP Static Delivery",
.uri = "static",
.has_subtree = 1,
+ .static_content = 1,
};
struct ast_str *ast_http_error(int status, const char *title, const char *extra_header, const char *text)
@@ -562,7 +563,9 @@ static struct ast_str *handle_post(struct server_instance *ser, char *uri,
return ast_http_error(200, "OK", NULL, "File successfully uploaded.");
}
-static struct ast_str *handle_uri(struct sockaddr_in *sin, char *uri, int *status, char **title, int *contentlength, struct ast_variable **cookies)
+static struct ast_str *handle_uri(struct sockaddr_in *sin, char *uri, int *status,
+ char **title, int *contentlength, struct ast_variable **cookies,
+ unsigned int *static_content)
{
char *c;
struct ast_str *out = NULL;
@@ -644,6 +647,8 @@ static struct ast_str *handle_uri(struct sockaddr_in *sin, char *uri, int *statu
AST_RWLIST_UNLOCK(&uris);
}
if (urih) {
+ if (urih->static_content)
+ *static_content = 1;
out = urih->callback(sin, uri, vars, status, title, contentlength);
AST_RWLIST_UNLOCK(&uris);
} else {
@@ -757,6 +762,7 @@ static void *httpd_helper_thread(void *data)
char *uri, *title=NULL;
int status = 200, contentlength = 0;
struct ast_str *out = NULL;
+ unsigned int static_content = 0;
if (!fgets(buf, sizeof(buf), ser->f))
goto done;
@@ -850,7 +856,7 @@ static void *httpd_helper_thread(void *data)
out = ast_http_error(501, "Not Implemented", NULL,
"Attempt to use unimplemented / unsupported method");
else /* try to serve it */
- out = handle_uri(&ser->requestor, uri, &status, &title, &contentlength, &vars);
+ out = handle_uri(&ser->requestor, uri, &status, &title, &contentlength, &vars, &static_content);
/* If they aren't mopped up already, clean up the cookies */
if (vars)
@@ -866,8 +872,10 @@ static void *httpd_helper_thread(void *data)
fprintf(ser->f, "HTTP/1.1 %d %s\r\n"
"Server: Asterisk/%s\r\n"
"Date: %s\r\n"
- "Connection: close\r\n",
- status, title ? title : "OK", ASTERISK_VERSION, timebuf);
+ "Connection: close\r\n"
+ "%s",
+ status, title ? title : "OK", ASTERISK_VERSION, timebuf,
+ static_content ? "" : "Cache-Control: no-cache, no-store\r\n");
if (!contentlength) { /* opaque body ? just dump it hoping it is properly formatted */
fprintf(ser->f, "%s", out->str);
} else {