- From: Henrik Frystyk Nielsen <frystyk@w3.org>
- Date: Fri, 29 Jan 1999 18:35:22 -0500
- To: www-lib@w3.org
- To: olga <olga@goliath.eai.com>
- Message-ID: <36B245BA.EF802BDA@w3.org>
olga wrote: > It is possible that debug stack of the request is used several times. > For example first time when 401 is returned by server, second time when 304 is > returned by server. I couldn't get it to crash but I found a very strange thing indeed - it put the 401 response into the cache which obviously is wrong. Also - there were some memory leaks where response headers were not freed. Could I get you try this patch (which here leaves no problems in purify what so ever) If it works then I will commit it - sorry about these stupid bugs :( Henrik
Index: HTTP.c
===================================================================
RCS file: /sources/public/libwww/Library/src/HTTP.c,v
retrieving revision 1.174
diff -c -r1.174 HTTP.c
*** HTTP.c 1999/01/27 13:56:31 1.174
--- HTTP.c 1999/01/29 23:31:25
***************
*** 755,761 ****
HTRequest_debugStream(request),
request, NO);
} else if (HTRequest_debugStream(request)) {
! if (me->status == 201) HTResponse_setCachable(response, HT_CACHE_ETAG);
me->target = HTStreamStack(WWW_MIME,
HTRequest_debugFormat(request),
HTRequest_debugStream(request),
--- 755,762 ----
HTRequest_debugStream(request),
request, NO);
} else if (HTRequest_debugStream(request)) {
! HTResponse_setCachable(response,
! (me->status == 201) ? HT_CACHE_ETAG : HT_NO_CACHE);
me->target = HTStreamStack(WWW_MIME,
HTRequest_debugFormat(request),
HTRequest_debugStream(request),
***************
*** 765,771 ****
** We still need to parse the MIME part in order to find any
** valuable meta information which is needed from the response.
*/
! if (me->status == 201) HTResponse_setCachable(response, HT_CACHE_ETAG);
me->target = HTStreamStack(WWW_MIME,
HTRequest_debugFormat(request),
HTRequest_debugStream(request),
--- 766,773 ----
** We still need to parse the MIME part in order to find any
** valuable meta information which is needed from the response.
*/
! HTResponse_setCachable(response,
! (me->status == 201) ? HT_CACHE_ETAG : HT_NO_CACHE);
me->target = HTStreamStack(WWW_MIME,
HTRequest_debugFormat(request),
HTRequest_debugStream(request),
Index: HTReqMan.c
===================================================================
RCS file: /sources/public/libwww/Library/src/HTReqMan.c,v
retrieving revision 2.74
diff -c -r2.74 HTReqMan.c
*** HTReqMan.c 1998/12/15 05:34:28 2.74
--- HTReqMan.c 1999/01/29 23:31:25
***************
*** 349,354 ****
--- 349,355 ----
PUBLIC BOOL HTRequest_setResponse (HTRequest * me, HTResponse * response)
{
if (me) {
+ if (me->response) HTResponse_delete(me->response);
me->response = response;
return YES;
}
Index: HTCache.c
===================================================================
RCS file: /sources/public/libwww/Library/src/HTCache.c,v
retrieving revision 2.58
diff -c -r2.58 HTCache.c
*** HTCache.c 1998/12/03 15:26:01 2.58
--- HTCache.c 1999/01/29 23:31:25
***************
*** 1439,1444 ****
--- 1439,1447 ----
/* Send the data down the pipe */
status = (*target->isa->put_block)(target, buffer, status);
+
+ /* Delete the response headers */
+ HTRequest_setResponse(request, NULL);
if (status == HT_LOADED) {
(*target->isa->flush)(target);
return YES;
Index: HTAnchor.c
===================================================================
RCS file: /sources/public/libwww/Library/src/HTAnchor.c,v
retrieving revision 1.82
diff -c -r1.82 HTAnchor.c
*** HTAnchor.c 1998/12/22 19:59:58 1.82
--- HTAnchor.c 1999/01/29 23:31:25
***************
*** 724,729 ****
--- 724,730 ----
/*
** Inherit all the unparsed headers - we may need them later!
*/
+ if (me->headers) HTAssocList_delete(me->headers);
me->headers = HTResponse_handOverHeader(response);
/*
Received on Friday, 29 January 1999 18:35:26 UTC