server-name: add_server_header add LWSAHH_FLAG_NO_SERVER_NAME
Also clean up usage of status code defines in lws
This commit is contained in:
parent
b9dd61bb6f
commit
4219a3281d
7 changed files with 32 additions and 25 deletions
29
lib/header.c
29
lib/header.c
|
@ -143,16 +143,17 @@ STORE_IN_ROM static const char * const err500[] = {
|
|||
};
|
||||
|
||||
int
|
||||
lws_add_http_header_status(struct lws *wsi, unsigned int code,
|
||||
lws_add_http_header_status(struct lws *wsi, unsigned int _code,
|
||||
unsigned char **p, unsigned char *end)
|
||||
{
|
||||
const struct lws_protocol_vhost_options *headers;
|
||||
unsigned char code_and_desc[60];
|
||||
const char *description = "", *p1;
|
||||
int n;
|
||||
STORE_IN_ROM static const char * const hver[] = {
|
||||
"HTTP/1.0", "HTTP/1.1", "HTTP/2"
|
||||
};
|
||||
const struct lws_protocol_vhost_options *headers;
|
||||
unsigned int code = _code & LWSAHH_CODE_MASK;
|
||||
const char *description = "", *p1;
|
||||
unsigned char code_and_desc[60];
|
||||
int n;
|
||||
|
||||
#ifdef LWS_WITH_ACCESS_LOG
|
||||
wsi->access_log.response = code;
|
||||
|
@ -181,11 +182,9 @@ lws_add_http_header_status(struct lws *wsi, unsigned int code,
|
|||
else
|
||||
p1 = hver[0];
|
||||
|
||||
n = sprintf((char *)code_and_desc, "%s %u %s",
|
||||
p1, code, description);
|
||||
n = sprintf((char *)code_and_desc, "%s %u %s", p1, code, description);
|
||||
|
||||
if (lws_add_http_header_by_name(wsi, NULL, code_and_desc,
|
||||
n, p, end))
|
||||
if (lws_add_http_header_by_name(wsi, NULL, code_and_desc, n, p, end))
|
||||
return 1;
|
||||
|
||||
headers = wsi->vhost->headers;
|
||||
|
@ -199,13 +198,11 @@ lws_add_http_header_status(struct lws *wsi, unsigned int code,
|
|||
headers = headers->next;
|
||||
}
|
||||
|
||||
if (wsi->context->server_string)
|
||||
if (lws_add_http_header_by_token(wsi,
|
||||
WSI_TOKEN_HTTP_SERVER,
|
||||
(unsigned char *)
|
||||
wsi->context->server_string,
|
||||
wsi->context->server_string_len,
|
||||
p, end))
|
||||
if (wsi->context->server_string &&
|
||||
!(_code & LWSAHH_FLAG_NO_SERVER_NAME))
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_SERVER,
|
||||
(unsigned char *)wsi->context->server_string,
|
||||
wsi->context->server_string_len, p, end))
|
||||
return 1;
|
||||
|
||||
if (wsi->vhost->options & LWS_SERVER_OPTION_STS)
|
||||
|
|
|
@ -2589,6 +2589,7 @@ enum http_status {
|
|||
HTTP_STATUS_MOVED_PERMANENTLY = 301,
|
||||
HTTP_STATUS_FOUND = 302,
|
||||
HTTP_STATUS_SEE_OTHER = 303,
|
||||
HTTP_STATUS_NOT_MODIFIED = 304,
|
||||
|
||||
HTTP_STATUS_BAD_REQUEST = 400,
|
||||
HTTP_STATUS_UNAUTHORIZED,
|
||||
|
@ -2909,6 +2910,10 @@ lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
|
|||
* and fail with nonzero return.
|
||||
*/
|
||||
///@{
|
||||
|
||||
#define LWSAHH_CODE_MASK ((1 << 16) - 1)
|
||||
#define LWSAHH_FLAG_NO_SERVER_NAME (1 << 30)
|
||||
|
||||
/**
|
||||
* lws_add_http_header_status() - add the HTTP response status code
|
||||
*
|
||||
|
@ -2917,7 +2922,11 @@ lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len);
|
|||
* \param p: pointer to current position in buffer pointer
|
||||
* \param end: pointer to end of buffer
|
||||
*
|
||||
* Adds the initial response code, so should be called first
|
||||
* Adds the initial response code, so should be called first.
|
||||
*
|
||||
* Code may additionally take OR'd flags:
|
||||
*
|
||||
* LWSAHH_FLAG_NO_SERVER_NAME: don't apply server name header this time
|
||||
*/
|
||||
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
|
||||
lws_add_http_header_status(struct lws *wsi,
|
||||
|
|
|
@ -445,7 +445,8 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin,
|
|||
uri, origin);
|
||||
|
||||
/* we don't need to send the payload */
|
||||
if (lws_add_http_header_status(wsi, 304, &p, end))
|
||||
if (lws_add_http_header_status(wsi,
|
||||
HTTP_STATUS_NOT_MODIFIED, &p, end))
|
||||
return -1;
|
||||
|
||||
if (lws_add_http_header_by_token(wsi,
|
||||
|
@ -1066,7 +1067,7 @@ lws_http_action(struct lws *wsi)
|
|||
p = buffer + LWS_PRE;
|
||||
end = p + sizeof(buffer) - LWS_PRE;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
return 1;
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_CONNECTION,
|
||||
(unsigned char *)"close", 5, &p, end))
|
||||
|
|
|
@ -243,7 +243,7 @@ reply:
|
|||
start = p;
|
||||
end = p + sizeof(buffer) - LWS_PRE;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
return -1;
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
(unsigned char *)"text/plain", 10,
|
||||
|
|
|
@ -319,7 +319,7 @@ callback_messageboard(struct lws *wsi, enum lws_callback_reasons reason,
|
|||
start = p;
|
||||
end = p + sizeof(buffer) - LWS_PRE;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
return -1;
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
(unsigned char *)"text/plain", 10, &p, end))
|
||||
|
|
|
@ -165,7 +165,7 @@ callback_post_demo(struct lws *wsi, enum lws_callback_reasons reason,
|
|||
start = p;
|
||||
end = p + n - LWS_PRE - 1;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
goto bail;
|
||||
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
|
|
|
@ -311,7 +311,7 @@ int callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
|
|||
* depending on what connection it happens to be working
|
||||
* on
|
||||
*/
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
return 1;
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_SERVER,
|
||||
(unsigned char *)"libwebsockets",
|
||||
|
@ -473,7 +473,7 @@ int callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
|
|||
start = p;
|
||||
end = p + sizeof(buffer) - LWS_PRE;
|
||||
|
||||
if (lws_add_http_header_status(wsi, 200, &p, end))
|
||||
if (lws_add_http_header_status(wsi, HTTP_STATUS_OK, &p, end))
|
||||
return 1;
|
||||
|
||||
if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE,
|
||||
|
@ -615,7 +615,7 @@ bail:
|
|||
lwsl_err("LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP\n");
|
||||
p = buffer + LWS_PRE;
|
||||
end = p + sizeof(buffer) - LWS_PRE;
|
||||
if (lws_add_http_header_status(lws_get_parent(wsi), 200, &p, end))
|
||||
if (lws_add_http_header_status(lws_get_parent(wsi), HTTP_STATUS_OK, &p, end))
|
||||
return 1;
|
||||
if (lws_add_http_header_by_token(lws_get_parent(wsi),
|
||||
WSI_TOKEN_HTTP_SERVER,
|
||||
|
|
Loading…
Add table
Reference in a new issue