On Wed, 25 Apr 2001, Paul J. Reder wrote:
> I believe that in an original version I used an immortal bucket here and
> had to change it for some reason, but I can't remember why. I might be
> thinking of one of the other places in the code where buckets are created
> though. Whether it was this code or some other code I seem to recall that
> the reason for the change had to do with what the code around it did, like
> maybe something to do with mixing immortal buckets with other types. If I
> recall correctly the change was recommended by Ryan.
I did a bit of digging and found it. In a message from Ryan dated
2000-11-21 1:14:58, he said this:
>> parse_string(r, tag_val, parsed_string, sizeof(parsed_string), 0);
>> if (!find_file(r, "flastmod", tag, parsed_string, &finfo)) {
>> char *t_val;
>>
>> t_val = ap_ht_time(r->pool, finfo.mtime, ctx->time_str, 0);
>> t_len = strlen(t_val);
>>
>> tmp_buck = ap_bucket_create_transient(t_val, t_len);
>> AP_BUCKET_INSERT_BEFORE(head_ptr, tmp_buck);
>> if (*inserted_head == NULL) {
>> *inserted_head = tmp_buck;
>> }
>>
[snip]
> CREATE_ERROR_BUCKET is brokecn because of the transient problem.
Yes, I agree that you can't use a transient bucket (because a transient
bucket means data on the stack that must be passed down right away or
setaside (ie, copied into a heap bucket). But you *can* use an immortal
bucket. Any disagreement with that statement, Ryan?
--Cliff
--------------------------------------------------------------
Cliff Woolley
[EMAIL PROTECTED]
Charlottesville, VA