www-apache-bugdb mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shamim Mohamed <sp...@languid.org>
Subject apache-api/8498: ap_send_fd doesn't seem to send the file; no error reported
Date Tue, 09 Oct 2001 21:58:12 GMT

>Number:         8498
>Category:       apache-api
>Synopsis:       ap_send_fd doesn't seem to send the file; no error reported
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Tue Oct 09 15:00:01 PDT 2001
>Originator:     spmap@languid.org
>Release:        2.0.16-beta
$   uname -a
Linux artemis.rubiconproject.com 2.4.3-20mdk #1 Sun Apr 15 23:03:10 CEST 2001 i686 unknown
$  gcc --version
I'm porting a module from 1.3.20 that has a content handler. The sequence of ops is:

     * File exists?
    if (stat(filename, &st) < 0)
        return ... ;

    /* Readable? */
    err = apr_file_open(&fp, filename, APR_READ, APR_OS_DEFAULT, r->pool);
    if (err != APR_SUCCESS) {
        ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, err, r->server,
                     "couldn't open file \"%s\"", filename);
        return ... ;

    /* Get file type and size */
    filesize = st.st_size;
    filetype = slFileType(filename);

    /* Send HTTP header */
    r->content_type = filetype;
    ap_set_content_length(r, filesize);
    r->status = HTTP_OK;
    r->status_line = "200 OK";
    /* Write the content */
    err = ap_send_fd(fp, r, 0, filesize, &sent);
    if (err != APR_SUCCESS || sent != filesize)
        ap_log_error(APLOG_MARK, APLOG_NOERRNO | APLOG_DEBUG, err, r->server,
                     "short write (%d/%d) for file \"%s\"",
                     sent, filesize, filename);


No errors are reported - I'm running httpd at LogLevel debug. But no data is
actually sent by ap_send_fd:

$ telnet localhost 6060
Connected to localhost.localdomain
Escape character is '^]'.
GET /content?pid=4078&f=/some/long/path/foo.txt&vc=23&t=1002662916&ttl=3600&k=1&a=nbGw0cZtf90iHTO0tp6AJg
HTTP/1.1 200 OK
Date: Tue, 09 Oct 2001 21:29:12 GMT
Server: Apache/2.0.16 (Unix)
Content-Length: 68
Connection: close
Content-Type: text/plain; charset=ISO-8859-1
Connection closed by foreign host.

As you can see, Content-type and Content-length are set correctly, but no data.

The server was built with:

./configure  --prefix=/usr/local/apache2 --enable-so --with-mpm=threaded --disable-cgid

and it's running on port 6060 as a non-root user.
I'm trying to trim down the DSO to reproduce the problem.
In the next few days I shall try to trace ap_send_fd() and try to figure out what's
going on.
 [In order for any reply to be added to the PR database, you need]
 [to include <apbugs@Apache.Org> in the Cc line and make sure the]
 [subject line starts with the report component and number, with ]
 [or without any 'Re:' prefixes (such as "general/1098:" or      ]
 ["Re: general/1098:").  If the subject doesn't match this       ]
 [pattern, your message will be misfiled and ignored.  The       ]
 ["apbugs" address is not added to the Cc line of messages from  ]
 [the database automatically because of the potential for mail   ]
 [loops.  If you do not include this Cc, your reply may be ig-   ]
 [nored unless you are responding to an explicit request from a  ]
 [developer.  Reply only with text; DO NOT SEND ATTACHMENTS!     ]

View raw message