diff --git a/http/http.c b/http/http.c
index cd63e34..f50e547 100644
--- a/http/http.c
+++ b/http/http.c
@@ -77,18 +77,17 @@ int parse_request(int fd, Req *req) {
void send_page(int fd, const char *title, Buf *body, const char *script_src) {
Buf page; buf_init(&page);
buf_str(&page, "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\n\r\n");
- /* inject so relative assets resolve correctly at any sub-path */
- const char *ph = strstr(g_header, "{{TITLE}}");
- const char *head_end = strstr(g_header, "");
- if (ph && head_end && head_end > ph) {
- /* write up to , inject base tag, then rest of header */
- buf_append(&page, g_header, ph - g_header);
+ /* inject immediately after
so it precedes all asset links */
+ const char *ph = strstr(g_header, "{{TITLE}}");
+ const char *head_tag = strstr(g_header, "");
+ if (ph && head_tag && g_cfg.base_path[0]) {
+ const char *after_head = head_tag + 6; /* skip "" */
+ buf_append(&page, g_header, after_head - g_header);
+ buf_fmt(&page, "", g_cfg.base_path);
+ /* now write from after up to {{TITLE}}, substitute title, then rest */
+ buf_append(&page, after_head, ph - after_head);
buf_str(&page, title);
- const char *after_title = ph + 9;
- buf_append(&page, after_title, head_end - after_title);
- if (g_cfg.base_path[0])
- buf_fmt(&page, "", g_cfg.base_path);
- buf_str(&page, head_end);
+ buf_str(&page, ph + 9);
} else if (ph) {
buf_append(&page, g_header, ph - g_header);
buf_str(&page, title);