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);