Commit 680c4646 authored by Jeff Trawick's avatar Jeff Trawick
Browse files

merge from trunk:

rotatelogs: Improve error message for open failures.

PR: 39487
Submitted by: jorton
Reviewed by: trawick, jim, wrowe


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@486612 13f79535-47bb-0310-9956-ffa450edef68
parent 3813726a
Loading
Loading
Loading
Loading
+3 −0
Changes for CHANGES: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.4
  *) rotatelogs: Improve error message for open failures.  PR 39487.
     [Joe Orton]
  *) mod_dbd: share per-request database handles across subrequests
     and internal redirects [Chris Darroch]
+0 −9
Changes for STATUS: 0 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -89,15 +89,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
      wrowe asks: isn't it time to make LogLevel directive parsing
                  reusable in the ap_config api?

   * rotatelogs: Produce useful error messages for open() failures.
     PR 39487
     Trunk version of patch:
       http://svn.apache.org/viewvc?view=rev&revision=478135
       http://svn.apache.org/viewvc?view=rev&revision=485828
     2.2.x version of patch:
       Trunk version works.
     +1: trawick, jim, wrowe

   * mod_proxy_balancer: Have the find_best_worker() function
    increment the elected counter, rather than requiring each
    ind lb method to do it, isolating what each lb method
+14 −7
Changes for support/rotatelogs.c: 14 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@
#endif

#define BUFSIZE         65536
#define ERRMSGSZ        82
#define ERRMSGSZ        128

#ifndef MAX_PATH
#define MAX_PATH        1024
@@ -188,6 +188,7 @@ int main (int argc, const char * const argv[])

        if (nLogFD == NULL) {
            int tLogStart;
            apr_status_t rv;

            if (tRotation) {
                tLogStart = (now / tRotation) * tRotation;
@@ -208,22 +209,28 @@ int main (int argc, const char * const argv[])
                sprintf(buf2, "%s.%010d", szLogRoot, tLogStart);
            }
            tLogEnd = tLogStart + tRotation;
            apr_file_open(&nLogFD, buf2, APR_READ | APR_WRITE | APR_CREATE | APR_APPEND,
            rv = apr_file_open(&nLogFD, buf2, APR_WRITE | APR_CREATE | APR_APPEND,
                               APR_OS_DEFAULT, pool);
            if (nLogFD == NULL) {
            if (rv != APR_SUCCESS) {
                char error[120];

                apr_strerror(rv, error, sizeof error);

                /* Uh-oh. Failed to open the new log file. Try to clear
                 * the previous log file, note the lost log entries,
                 * and keep on truckin'. */
                if (nLogFDprev == NULL) {
                    fprintf(stderr, "1 Previous file handle doesn't exists %s\n", buf2);
                    fprintf(stderr, "Could not open log file '%s' (%s)\n", buf2, error);
                    exit(2);
                }
                else {
                    nLogFD = nLogFDprev;
                    sprintf(errbuf,
                    /* Try to keep this error message constant length
                     * in case it occurs several times. */
                    apr_snprintf(errbuf, sizeof errbuf,
                                 "Resetting log file due to error opening "
                            "new log file. %10d messages lost.\n",
                            nMessCount);
                                 "new log file, %10d messages lost: %-25.25s\n",
                                 nMessCount, error);
                    nWrite = strlen(errbuf);
                    apr_file_trunc(nLogFD, 0);
                    if (apr_file_write(nLogFD, errbuf, &nWrite) != APR_SUCCESS) {