From 5df79c53745fde5d6c3340a2979b1429cd5892c1 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Sat, 8 Oct 2011 20:30:28 +0200 Subject: Initial import of htcd system 1.0 Signed-off-by: Henrik Rydberg --- src/net/server.cc | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/net/server.cc (limited to 'src/net/server.cc') diff --git a/src/net/server.cc b/src/net/server.cc new file mode 100644 index 0000000..6996b20 --- /dev/null +++ b/src/net/server.cc @@ -0,0 +1,75 @@ +/************************************************************************* + * + * HTCd - Copyright (C) 1998-2006 Henrik Rydberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +const mstring SERVURI="/htc/server.htc"; + +htcServ::htcServ(const sref& path) : htcd(path),user(htcd.toks) +{ + Setup(user,htcd); + LoadBuffer(server,path+SERVURI); +} + +/////////////////////////////////////////////////////// + +static void Log(fp_stream& tlog,htcd_req& R,const sref& status) +{ + MLOCK(R.htcd()->mutex); + tlog<<"["<node.ip<<"][" + <node.name<<":"<port<<"][" + <method<<"][" + <uri<<"]["<arg<<"]\n"; + tlog.flush(); +} + +/////////////////////////////////////////////////////// + +int SendStatus(isocket& out,htcd_req& R,int keep,const sref& status,const sref& msg) +{ + R.resp.status=status; + if(atof(R.req->version.past_first(http_ver))method,HTTP_HEAD)) { + R.resp.cont_type.clear(); + R.resp.cont_length.clear(); + } + else { + if(R.resp.cont_type.empty()) R.resp.cont_type=http_mime_default; + R.resp.cont_length=itoa(msg.size()); + } + Log(R.htcd()->logger,R,status); + R.resp.putHead(out); + putend(out); + out<