You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2011/03/06 04:21:39 UTC

DO NOT REPLY [Bug 50878] New: redundant operation when calling apr_stat

https://issues.apache.org/bugzilla/show_bug.cgi?id=50878

           Summary: redundant operation when calling apr_stat
           Product: Apache httpd-2
           Version: 2.2.17
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: mod_dav
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: songlinhai0543@gmail.com


apr_stat() function is used to get information for a given file. It has four
parameters: the first parameter is a apr_finfo_t struct, which is used to hold
the return value, and the third parameter is used to tell apr_stat which
information is required by the caller. If caller uses some specific value as
the third parameter, like APR_FINFO_DEV and APR_FINFO_TYPE, only some fields of
apr_finfo_t struct are filled, but not all. If caller uses APR_FINFO_NORM as
the third paramter, all fields of apr_finfo_t will be filled. 


In the bug report https://issues.apache.org/bugzilla/show_bug.cgi?id=45464, the
reporter says that misusing of APR_FIFO_NORM as the third parameter causes
apr_stat() to return redundant values, which are not used in the calling
context, and this brings obvious delay in the reporter's using context. 

I check all apr_stat function call with APR_FINFO_NORM as the third parameter
in the latest 2.2.17 httpd version, and find that in some places, only part of
return value are used, not all, so they should not use APR_FINFO_NORM as the
third parameter. I list places I find, and give out my fixing suggestions. I
think that my fixing suggestion will keep the function of codes, and bring a
better performance. 

./modules/dav/fs/repos.c:462:    rv = apr_stat(&src_finfo, src, APR_FINFO_NORM,
p);

fixing suggestion:

rv = apr_stat(&src_finfo, src, APR_FINFO_DEV, p);


===============================================================================

./modules/dav/fs/repos.c:483:    rv = apr_stat(&dst_state_finfo, dst,
APR_FINFO_NORM, p);

fixing suggestion:
rv = apr_stat(&dst_state_finfo, dst, APR_FINFO_TYPE | APR_FINFO_DEV, p);

===============================================================================

./srclib/apr/test/sendfile.c:149:    rv = apr_stat(&finfo, fname,
APR_FINFO_NORM, p);

fixing suggestion:

rv = apr_stat(&finfo, fname, APR_FINFO_SIZE, p);


===============================================================================
./srclib/apr/test/testlfs.c:136:                       apr_stat(&finfo, TESTFN,
APR_FINFO_NORM, p));

fixing suggestion:

 apr_stat(&finfo, TESTFN, APR_FINFO_SIZE , p));

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org