Hi Henrik ,
   Thanks for your response.  I understood the some other methods  also uses
Entity-body. I have fixed that too and tested . It is working fine .
I will check the   Squid-2.5  and later release  .
I have fixed only in two places :-
Here I am skiping the headers  from the End-user for trace Request to the
Orginn Server.
          if ( orig_request->method != METHOD_TRACE)
            httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
          else
                  continue ;
         }
Here is the correct one , Now this will handle for the methods which has
Entity body.
 if (httpState->orig_request->content_length > 0)
    if ((httpState->orig_request->content_length > 0) && (req->method !=
METHOD_TRACE))
         sendHeaderDone = httpSendRequestEntry;
      else
         sendHeaderDone = httpSendComplete;
I have Tested PUT and POST.
For OPTIONS the Entity body is optional.
Thanks
senthil
Henrik Nordstrom wrote:
> Should have been a bit clearer in my response.. see below.
>
> Senthil Kumar .R wrote:
> > Hi Henrik,
> >
> > Here is the code for diff -u
> >
> > diff -u http.c http.ctracefix
> > --- http.c      Thu May  9 14:43:51 2002
> > +++ http.ctracefix      Thu May 23 08:55:10 2002
> > @@ -516,6 +516,7 @@
> >         } else if (entry->mem_obj->inmem_hi == 0) {
> >             ErrorState *err;
> >             err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
> > +           err->request = requestLink((request_t *) request);
> >             err->xerrno = errno;
> >             fwdFail(httpState->fwd, err);
> >             comm_close(fd);
>
> The above is already fixed in the current sources (including Squid-2.4).
>
> > @@ -526,6 +527,7 @@
> >         ErrorState *err;
> >         err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
> >         err->xerrno = errno;
> > +       err->request = requestLink((request_t *) request);
> >         fwdFail(httpState->fwd, err);
> >         httpState->eof = 1;
> >         comm_close(fd);
>
> This too..
>
> > @@ -737,7 +739,11 @@
> >             break;
> >         default:
> >             /* pass on all other header fields */
> > +          if ( orig_request->method != METHOD_TRACE)
> >             httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
> > +          else
> > +                  continue ;
> > +
> >         }
> >      }
>
> This do not look correct. Why do you not want Squid to forward headers it do
> not know about in TRACE requests?
>
> > @@ -855,7 +861,7 @@
> >
> >      debug(11, 5) ("httpSendRequest: FD %d: httpState %p.\n",
> > httpState->fd, httpState);
> >
> > -    if (httpState->orig_request->content_length > 0)
> > +    if ((httpState->orig_request->content_length > 0) && (req->method ==
> > METHOD_POST))
> >         sendHeaderDone = httpSendRequestEntry;
> >      else
> >         sendHeaderDone = httpSendComplete;
>
> And this is most certainly NOT correct as there is numerous request methods
> that may have a request entity, not only POST. The most obvious one is PUT,
> but the truth is that nearly any request method can have a request entity.
>
> Regards
> Henrik
-- Visit us :- http://cdn.hcltech.comReceived on Fri Jun 07 2002 - 01:24:38 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:15:40 MST