]> git.sesse.net Git - nageru/blobdiff - httpd.cpp
Do not link kaeru against CEF.
[nageru] / httpd.cpp
index 811e095dc9541a442742e02c7d7454b0284cc207..f82c8038e55f61b90031534dd88c540e17d53d7e 100644 (file)
--- a/httpd.cpp
+++ b/httpd.cpp
@@ -89,15 +89,29 @@ int HTTPD::answer_to_connection(MHD_Connection *connection,
                return ret;
        }
        if (endpoints.count(url)) {
-               pair<string, string> contents_and_type = endpoints[url]();
+               pair<string, string> contents_and_type = endpoints[url].callback();
                MHD_Response *response = MHD_create_response_from_buffer(
                        contents_and_type.first.size(), &contents_and_type.first[0], MHD_RESPMEM_MUST_COPY);
                MHD_add_response_header(response, "Content-type", contents_and_type.second.c_str());
+               if (endpoints[url].cors_policy == ALLOW_ALL_ORIGINS) {
+                       MHD_add_response_header(response, "Access-Control-Allow-Origin", "*");
+               }
                int ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
                MHD_destroy_response(response);  // Only decreases the refcount; actual free is after the request is done.
                return ret;
        }
 
+       // Small hack; reject unknown /channels/foo.
+       if (string(url).find("/channels/") == 0) {
+               string contents = "Not found.";
+               MHD_Response *response = MHD_create_response_from_buffer(
+                       contents.size(), &contents[0], MHD_RESPMEM_MUST_COPY);
+               MHD_add_response_header(response, "Content-type", "text/plain");
+               int ret = MHD_queue_response(connection, MHD_HTTP_NOT_FOUND, response);
+               MHD_destroy_response(response);  // Only decreases the refcount; actual free is after the request is done.
+               return ret;
+       }
+
        HTTPD::Stream *stream = new HTTPD::Stream(this, framing);
        stream->add_data(header.data(), header.size(), Stream::DATA_TYPE_HEADER);
        {