You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Petr Lampa <la...@fee.vutbr.cz> on 1997/02/05 23:00:01 UTC

mod_negotiation/159: Memory hog in handle_multi()

>Number:         159
>Category:       mod_negotiation
>Synopsis:       Memory hog in handle_multi()
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    gnats-admin (GNATS administrator)
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Wed Feb  5 14:00:01 1997
>Originator:     lampa@fee.vutbr.cz
>Organization:
apache
>Release:        1.2b2, b3, b4, b6
>Environment:
FreeBSD-2.2BETA
>Description:
Problem reported for 1.2b2, still unresolved.

All generated variants have to be explicitly deleted
using destroy_sub_req() at the end of handle_multi(). Number of variants
could be quite huge (consider situation when documents 
are available in 5 languages, each in 10 charsets).
>How-To-Repeat:

>Fix:
Replace every 'return status' with the exception of first one in handle_multi()
with this code:

     res = status;
     goto return_from_multi;


return_from_multi:
    var_rec *avail_recs = (var_rec *)neg->avail_vars->elts;
    for (j = 0; j < neg->avail_vars->nelts; ++j) {
       var_rec *variant = &avail_recs[j];
       if (variant != best && variant->sub_req) destroy_sub_req(variant->sub_req);
    }
    return res%3
>Audit-Trail:
>Unformatted: