12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /*
- 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.
- */
|