/* options.c -- Options and Trace handler Copyright (c) All Rights Reserved. See details at the end of the file. */ /********************************* Includes ***********************************/ #include "goahead.h" /*********************************** Code *************************************/ /* Handle OPTIONS and TRACE methods. Return true to indicate the request was handled, even for errors. */ static bool optionsHandler(Webs *wp) { assert(wp); #if !ME_GOAHEAD_STEALTH if (smatch(wp->method, "OPTIONS")) { websSetStatus(wp, HTTP_CODE_OK); websWriteHeaders(wp, 0, 0); websWriteHeader(wp, "Allow", "DELETE,GET,HEAD,OPTIONS,POST,PUT,TRACE"); websWriteEndHeaders(wp); websDone(wp); return 1; } else if (smatch(wp->method, "TRACE")) { websSetStatus(wp, HTTP_CODE_OK); websWriteHeaders(wp, 0, 0); websWriteEndHeaders(wp); websWrite(wp, "%s %s %s\r\n", wp->method, wp->url, wp->protoVersion); websDone(wp); return 1; } #endif websResponse(wp, HTTP_CODE_NOT_ACCEPTABLE, "Unsupported method"); return 1; } PUBLIC int websOptionsOpen() { websDefineHandler("options", 0, optionsHandler, 0, 0); return 0; } /* Copyright (c) Embedthis Software. All Rights Reserved. This software is distributed under commercial and open source licenses. You may use the Embedthis GoAhead open source license or you may acquire a commercial license from Embedthis Software. You agree to be fully bound by the terms of either license. Consult the LICENSE.md distributed with this software for full details and other copyrights. */