Wed, 02 Jan 2013 16:03:50 +0100
added access log
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2013 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include "error.h" #include "../ucx/string.h" #include "../util/pblock.h" // macro for creating an error string (ucx sstr_t) #define ERRMSG(s) { s, sizeof(s)-1 } static sstr_t error_403 = ERRMSG("<html><body>forbidden</body></html>"); static sstr_t error_404 = ERRMSG("<html><body>not found</body></html>"); static sstr_t error_500 = ERRMSG("<html><body>server error</body></html>"); static sstr_t error_std = ERRMSG("<html><body>error</body></html>"); int nsapi_error_request(Session *sn, Request *rq) { short status = rq->status_num; sstr_t msg = error_std; switch(status) { case 403: { msg = error_403; break; } case 404: { msg = error_404; break; } case 500: { msg = error_500; break; } } pblock_kninsert(pb_key_content_length, msg.length, rq->srvhdrs); pblock_removekey(pb_key_content_type, rq->srvhdrs); pblock_nvinsert("content-type", "text/html", rq->srvhdrs); http_start_response(sn, rq); net_write(sn->csd, msg.ptr, msg.length); return REQ_PROCEED; }