X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fcontext_loop.c;h=fb59144628ef36381458529276f4efafc6b8bf9f;hb=efccdcf4db04e63bfa3512c80215357ee9ffd98f;hp=8295fff75885ab992b873b9fddb1956af083744f;hpb=eae9f81553dc2753bb1101de8564bf72dcd5b243;p=citadel.git diff --git a/webcit/context_loop.c b/webcit/context_loop.c index 8295fff75..fb5914462 100644 --- a/webcit/context_loop.c +++ b/webcit/context_loop.c @@ -7,18 +7,12 @@ * Copyright (c) 1996-2011 by the citadel.org team * * This program is open source 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 3 of the - * License, or (at your option) any later version. + * modify it under the terms of the GNU General Public License version 3. * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "webcit.h" @@ -267,7 +261,6 @@ int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf) void *vLine, *vHandler; const char *Pos = NULL; - Hdr->HR.ReqLine = Line; /* The requesttype... GET, POST... */ StrBufExtract_token(Buf, Hdr->HR.ReqLine, 0, ' '); @@ -332,15 +325,23 @@ int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf) } if (Hdr->HR.Handler != NULL) { - if ((Hdr->HR.Handler->Flags & BOGUS) != 0) + if ((Hdr->HR.Handler->Flags & BOGUS) != 0) { return 1; + } Hdr->HR.DontNeedAuth = ( ((Hdr->HR.Handler->Flags & ISSTATIC) != 0) || ((Hdr->HR.Handler->Flags & ANONYMOUS) != 0) - ); + ); } else { Hdr->HR.DontNeedAuth = 1; /* Flat request? show him the login screen... */ + StrBuf *NewLine = NewStrBufPlain(HKEY("GET /readfwd?go=")); + StrBufUrlescAppend(NewLine, Buf, NULL); + StrBufAppendBufPlain(NewLine, HKEY(" HTTP/1.0"), 0); + syslog(LOG_DEBUG, "Replacing with: %s", ChrPtr(NewLine)); + int return_value = ReadHttpSubject(Hdr, NewLine, Buf); + FreeStrBuf(&NewLine); + return return_value; } return 0; @@ -713,7 +714,8 @@ const char *ReqStrs[eNONE] = { "DELETE", "HEAD", "MOVE", - "COPY" + "COPY", + "REPORT" }; void @@ -759,6 +761,10 @@ ServerStartModule_CONTEXT v = malloc(sizeof(long)); *v = eCOPY; Put(HttpReqTypes, HKEY("COPY"), v, NULL); + + v = malloc(sizeof(long)); + *v = eREPORT; + Put(HttpReqTypes, HKEY("REPORT"), v, NULL); } void