* more fixes, offset in URLS is different now, since we strip the command.
[citadel.git] / webcit / paramhandling.c
index 1f4fc85058711db5e1385e204333dee6af6e903f..bb7367fdbd3b6dd449bdf84548ee81c705c792b2 100644 (file)
@@ -394,28 +394,30 @@ StrEscPuts(WC->UrlFragment1);
 
 void tmplput_url_part(StrBuf *Target, WCTemplputParams *TP)
 {
+       StrBuf *Name = NULL;
        StrBuf *UrlBuf;
        wcsession *WCC = WC;
        
        if (WCC != NULL) {
                if (TP->Tokens->Params[0]->lvalue == 0) {
                        UrlBuf = NewStrBuf();
-                       StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 1, '/');
+                       if (WCC->Hdr->Handler != NULL)
+                               UrlBuf = Name = WCC->Hdr->Handler->Name;
                }
                else if (TP->Tokens->Params[0]->lvalue == 1) {
                        UrlBuf = NewStrBuf();
-                       StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 2, '/');
+                       StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 0, '/');
                }
                else {
                        UrlBuf = NewStrBuf();
-                       StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 3, '/');
+                       StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 1, '/');
                }
 
                if (UrlBuf == NULL)  {
                        LogTemplateError(Target, "urlbuf", ERR_PARM1, TP, "not set.");
                }
                StrBufAppendTemplate(Target, TP, UrlBuf, 2);
-               FreeStrBuf(&UrlBuf);
+               if (Name == NULL) FreeStrBuf(&UrlBuf);
        }
 }