DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=28718>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=28718 apr_sdbm_lock does not pass the APR_FLOCK_NONBLOCK flag to apr_file_lock Summary: apr_sdbm_lock does not pass the APR_FLOCK_NONBLOCK flag to apr_file_lock Product: Apache httpd-2.0 Version: 2.0.49 Platform: All OS/Version: All Status: NEW Severity: Enhancement Priority: Other Component: Core AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] apr-util/dbm/apr_sdbm_lock does not pass the APR_FLOCK_NONBLOCK flag to apr_file_lock. This is because of the way type is tested in function. It is minor change that will not affect exising code to allow APR_FLOCK_NONBLOCK to passed through apr_sdbm_lock to apr_file_lock diff shown below: diff -C 3 sdbm_lock_old.c sdbm_lock.c *** sdbm_lock_old.c Fri Feb 13 01:52:42 2004 --- sdbm_lock.c Fri Apr 30 11:18:35 2004 *************** *** 21,30 **** #include "sdbm_tune.h" /* NOTE: this function blocks until it acquires the lock */ ! APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int type) { apr_status_t status; ! if (!(type == APR_FLOCK_SHARED || type == APR_FLOCK_EXCLUSIVE)) return APR_EINVAL; --- 21,31 ---- #include "sdbm_tune.h" /* NOTE: this function blocks until it acquires the lock */ ! APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int intype) { apr_status_t status; ! int type; ! type = (intype & APR_FLOCK_TYPEMASK); if (!(type == APR_FLOCK_SHARED || type == APR_FLOCK_EXCLUSIVE)) return APR_EINVAL; *************** *** 46,52 **** * zero size: either a fresh database, or one with a single, * unsplit data page: dirpage is all zeros. */ ! if ((status = apr_file_lock(db->dirf, type)) == APR_SUCCESS) { apr_finfo_t finfo; if ((status = apr_file_info_get(&finfo, APR_FINFO_SIZE, db->dirf)) --- 47,53 ---- * zero size: either a fresh database, or one with a single, * unsplit data page: dirpage is all zeros. */ ! if ((status = apr_file_lock(db->dirf, intype)) == APR_SUCCESS) { apr_finfo_t finfo; if ((status = apr_file_info_get(&finfo, APR_FINFO_SIZE, db->dirf)) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
