https://bz.apache.org/bugzilla/show_bug.cgi?id=63607

            Bug ID: 63607
           Summary: Inconsistent translation of error code in server/util
           Product: Apache httpd-2
           Version: 2.5-HEAD
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Core
          Assignee: bugs@httpd.apache.org
          Reporter: lege...@foxmail.com
  Target Milestone: ---

We find that in ap_parse_form_data() at server/util.c:

AP_DECLARE(int) ap_parse_form_data(request_rec *r, ap_filter_t *f,
                                   apr_array_header_t **ptr,
                                   apr_size_t num, apr_size_t usize)
{
...
2822: rv = apr_bucket_read(bucket, &data, &len, APR_BLOCK_READ);
            if (rv != APR_SUCCESS) {
                apr_brigade_destroy(bb);
                return HTTP_BAD_REQUEST;
            }
...
}

apr_bucket_read() is a macro to a function pointer read, and it can call a
function file_bucket_read() which can return error code EINVAL from
file_bucket_read() -> apr_file_seek()

This means EINVAL(22) is translated to a client-side error
HTTP_BAD_REQUEST(400), which I think there may be wrong since the error code
means there is something wrong with the server.

Let's look at another translation at mod_cache,
modules/cache/mod_cache_socache.c:

static int socache_precfg(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t
*ptmp)
{
...
    apr_status_t rv = ap_mutex_register(pconf, cache_socache_id, NULL,
            APR_LOCK_DEFAULT, 0);
    if (rv != APR_SUCCESS) {
        ap_log_perror(APLOG_MARK, APLOG_CRIT, rv, plog, APLOGNO(02390)
                "failed to register %s mutex", cache_socache_id);
1415:        return 500; /* An HTTP status would be a misnomer! */
    }
...
}

Here ap_mutex_register() can return EINVAL as well, but it is correctly
translated to server-side error 500. Maybe as the comment suggests, it should
not be translated to an HTTP status? I am not sure about that.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscr...@httpd.apache.org
For additional commands, e-mail: bugs-h...@httpd.apache.org

Reply via email to