mturk       2005/02/06 01:33:15

  Modified:    jk/native/apache-2.0 mod_jk.c
  Log:
  Initialize log file before initializing JK, so that we can see error
  messages if config has errors.
  
  Revision  Changes    Path
  1.117     +74 -73    jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- mod_jk.c  5 Feb 2005 12:41:17 -0000       1.116
  +++ mod_jk.c  6 Feb 2005 09:33:15 -0000       1.117
  @@ -56,7 +56,7 @@
   
   /* deprecated with apr 0.9.3 */
   
  -/* 
  +/*
      The latest Apache 2.0.47 for iSeries didn't export apr_filepath_name_get
      but apr_filename_of_pathname, even if includes seems right and the APR
      in use is 0.9.4
  @@ -104,7 +104,7 @@
   
   /*
    * If you are not using SSL, comment out the following line. It will make
  - * apache run faster.  
  + * apache run faster.
    *
    * Personally, I (DM), think this may be a lie.
    */
  @@ -296,7 +296,7 @@
               if (rv = ap_change_request_body_xlate(p->r, 65535, 65535)) {     
   /* turn off request body translation */
                   ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0,
                                NULL,
  -                             "mod_jk: Error on ap_change_request_body_xlate, 
rc=%d \n",
  +                             "mod_jk: Error on ap_change_request_body_xlate, 
rc=%d",
                                rv);
                   return JK_FALSE;
               }
  @@ -350,7 +350,7 @@
               if (!p->response_started) {
                   if (JK_IS_DEBUG_LEVEL(main_log))
                       jk_log(main_log, JK_LOG_DEBUG,
  -                           "Write without start, starting with defaults\n");
  +                           "Write without start, starting with defaults");
                   if (!s->start_response(s, 200, NULL, NULL, NULL, 0)) {
                       return JK_FALSE;
                   }
  @@ -366,7 +366,7 @@
               if (rc) {
                   ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0,
                                NULL,
  -                             "mod_jk: Error on 
ap_change_response_body_xlate, rc=%d \n",
  +                             "mod_jk: Error on 
ap_change_response_body_xlate, rc=%d",
                                rc);
                   return JK_FALSE;
               }
  @@ -377,7 +377,7 @@
                   size_t toSend = (ll > CHUNK_SIZE) ? CHUNK_SIZE : ll;
                   r = ap_rwrite((const char *)bb, toSend, p->r);
                   jk_log(main_log, JK_LOG_DEBUG,
  -                       "writing %ld (%ld) out of %ld \n", toSend, r, ll);
  +                       "writing %ld (%ld) out of %ld", toSend, r, ll);
                   ll -= CHUNK_SIZE;
                   bb += CHUNK_SIZE;
   
  @@ -393,7 +393,7 @@
   #ifndef AS400
               if (ap_rflush(p->r) != APR_SUCCESS) {
                   ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0,
  -                             NULL, "mod_jk: Error flushing \n");
  +                             NULL, "mod_jk: Error flushing");
                   return JK_FALSE;
               }
   #endif
  @@ -480,7 +480,7 @@
        */
       if (JK_IS_DEBUG_LEVEL(conf->log))
           jk_log(conf->log, JK_LOG_DEBUG,
  -               "agsp=%u agsn=%s hostn=%s shostn=%s cbsport=%d sport=%d 
claport=%d\n",
  +               "agsp=%u agsn=%s hostn=%s shostn=%s cbsport=%d sport=%d 
claport=%d",
                  ap_get_server_port(r),
                  ap_get_server_name(r) != NULL ? ap_get_server_name(r) : "",
                  r->hostname != NULL ? r->hostname : "",
  @@ -556,7 +556,7 @@
       s->is_ssl = JK_FALSE;
       s->ssl_cert = NULL;
       s->ssl_cert_len = 0;
  -    s->ssl_cipher = NULL;       /* required by Servlet 2.3 Api, 
  +    s->ssl_cipher = NULL;       /* required by Servlet 2.3 Api,
                                      allready in original ajp13 */
       s->ssl_session = NULL;
       s->ssl_key_size = -1;       /* required by Servlet 2.3 Api, added in jtc 
*/
  @@ -730,7 +730,7 @@
       else {
           if (worker == NULL)
               return "JkMount needs a path when not defined in a location";
  -        else 
  +        else
               return "JkMount can not have a path when defined in a location";
       }
   
  @@ -773,7 +773,7 @@
       else {
           if (worker == NULL)
               return "JkUnMount needs a path when not defined in a location";
  -        else 
  +        else
               return "JkUnMount can not have a path when defined in a 
location";
       }
   
  @@ -1244,8 +1244,8 @@
    * JkRequestLogFormat format string
    *
    * %b - Bytes sent, excluding HTTP headers. In CLF format
  - * %B - Bytes sent, excluding HTTP headers.             
  - * %H - The request protocol              
  + * %B - Bytes sent, excluding HTTP headers.
  + * %H - The request protocol
    * %m - The request method
    * %p - The canonical Port of the server serving the request
    * %q - The query string (prepended with a ? if a query string exists,
  @@ -1405,7 +1405,7 @@
    *  ForwardURICompat         => Forward URI normally, less spec compliant 
but mod_rewrite compatible (old TC)
    *  ForwardURICompatUnparsed => Forward URI as unparsed, spec compliant but 
broke mod_rewrite (old TC)
    *  ForwardURIEscaped        => Forward URI escaped and Tomcat (3.3 rc2) 
stuff will do the decoding part
  - *  ForwardDirectories       => Forward all directory requests with no index 
files to Tomcat 
  + *  ForwardDirectories       => Forward all directory requests with no index 
files to Tomcat
    */
   
   const char *jk_set_options(cmd_parms * cmd, void *dummy, const char *line)
  @@ -1504,7 +1504,7 @@
       jk_server_conf_t *conf =
           (jk_server_conf_t *) ap_get_module_config(s->module_config,
                                                     &jk_module);
  -    
  +
       if (jk_map_read_property(conf->worker_properties, line) == JK_FALSE)
           return apr_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", 
line);
   
  @@ -1666,7 +1666,7 @@
       JK_TRACE_ENTER(xconf->log);
       if (apr_table_get(r->subprocess_env, "no-jk")) {
           jk_log(xconf->log, JK_LOG_DEBUG,
  -               "Into handler no-jk env var detected for uri=%s, declined\n",
  +               "Into handler no-jk env var detected for uri=%s, declined",
                  r->uri);
   
           JK_TRACE_EXIT(xconf->log);
  @@ -1687,19 +1687,19 @@
       }
   
       if (worker_name == NULL) {
  -        /* we may be here because of a manual directive ( that overrides 
  +        /* we may be here because of a manual directive ( that overrides
              translate and
              sets the handler directly ). We still need to know the worker.
            */
           if (worker_env.num_of_workers == 1) {
  -          /** We have a single worker ( the common case ). 
  -              ( lb is a bit special, it should count as a single worker but 
  +          /** We have a single worker ( the common case ).
  +              ( lb is a bit special, it should count as a single worker but
                 I'm not sure how ). We also have a manual config directive that
                 explicitely give control to us. */
               worker_name = worker_env.first_worker;
               if (JK_IS_DEBUG_LEVEL(xconf->log))
                   jk_log(xconf->log, JK_LOG_DEBUG,
  -                       "Manual configuration for %s %s %d\n",
  +                       "Manual configuration for %s %s %d",
                          r->uri, worker_env.first_worker,
                          worker_env.num_of_workers);
           }
  @@ -1709,14 +1709,14 @@
                   worker_name = worker_env.first_worker;
               if (JK_IS_DEBUG_LEVEL(xconf->log))
                   jk_log(xconf->log, JK_LOG_DEBUG,
  -                       "Manual configuration for %s %d\n",
  +                       "Manual configuration for %s %d",
                          r->uri, worker_env.first_worker);
           }
       }
   
       if (JK_IS_DEBUG_LEVEL(xconf->log))
          jk_log(xconf->log, JK_LOG_DEBUG, "Into handler %s worker=%s"
  -              " r->proxyreq=%d\n",
  +              " r->proxyreq=%d",
                 r->handler, worker_name, r->proxyreq);
   
       conf = (jk_server_conf_t *) 
ap_get_module_config(r->server->module_config,
  @@ -1725,7 +1725,7 @@
       /* If this is a proxy request, we'll notify an error */
       if (r->proxyreq) {
           jk_log(xconf->log, JK_LOG_INFO, "Proxy request for worker=%s"
  -              " is not allowed\n",
  +              " is not allowed",
                 worker_name);
           JK_TRACE_EXIT(xconf->log);
           return HTTP_INTERNAL_SERVER_ERROR;
  @@ -1751,7 +1751,7 @@
           /* If the remote client has aborted, just ignore the request */
           if (r->connection->aborted) {
               jk_log(xconf->log, JK_LOG_INFO, "Client connection aborted for"
  -                   " worker=%s\n",
  +                   " worker=%s",
                      worker_name);
               JK_TRACE_EXIT(xconf->log);
               return OK;
  @@ -1785,8 +1785,8 @@
               if (init_ws_service(&private_data, &s, conf)) {
                   jk_endpoint_t *end = NULL;
   
  -                /* Use per/thread pool ( or "context" ) to reuse the 
  -                   endpoint. It's a bit faster, but I don't know 
  +                /* Use per/thread pool ( or "context" ) to reuse the
  +                   endpoint. It's a bit faster, but I don't know
                      how to deal with load balancing - but it's usefull for JNI
                    */
   
  @@ -1818,17 +1818,17 @@
                   }
                   else {            /* this means we couldn't get an endpoint 
*/
                       jk_log(xconf->log, JK_LOG_ERROR, "Could not get endpoint"
  -                           " for worker=%s\n",
  +                           " for worker=%s",
                              worker_name);
                       rc = 0;       /* just to make sure that we know we've 
failed */
                   }
               }
               else {
                   jk_log(xconf->log, JK_LOG_ERROR, "Could not init service"
  -                       " for worker=%s\n",
  +                       " for worker=%s",
                          worker_name);
                   JK_TRACE_EXIT(xconf->log);
  -                return HTTP_INTERNAL_SERVER_ERROR;                
  +                return HTTP_INTERNAL_SERVER_ERROR;
               }
   #ifndef NO_GETTIMEOFDAY
               if (conf->format != NULL) {
  @@ -1854,14 +1854,14 @@
                      let apache handle the error code */
                   if (!r->sent_bodyct && r->status >= HTTP_BAD_REQUEST) {
                       jk_log(xconf->log, JK_LOG_INFO, "No body with status=%d"
  -                           " for worker=%s\n",
  +                           " for worker=%s",
                              r->status, worker_name);
                       JK_TRACE_EXIT(xconf->log);
                       return r->status;
                   }
                   if (JK_IS_DEBUG_LEVEL(xconf->log))
                       jk_log(xconf->log, JK_LOG_DEBUG, "Service finished"
  -                           " with status=%d for worker=%s\n",
  +                           " with status=%d for worker=%s",
                              r->status, worker_name);
                   JK_TRACE_EXIT(xconf->log);
                   return OK;      /* NOT r->status, even if it has changed. */
  @@ -1869,14 +1869,14 @@
               else if (rc == JK_CLIENT_ERROR) {
                   r->connection->aborted = 1;
                   jk_log(xconf->log, JK_LOG_INFO, "Aborting connection"
  -                       " for worker=%s\n",
  +                       " for worker=%s",
                          worker_name);
                   JK_TRACE_EXIT(xconf->log);
                   return OK;
               }
               else {
                   jk_log(xconf->log, JK_LOG_INFO, "Service error=%d"
  -                       " for worker=%s\n",
  +                       " for worker=%s",
                          rc, worker_name);
                   JK_TRACE_EXIT(xconf->log);
                   return HTTP_INTERNAL_SERVER_ERROR;
  @@ -1884,7 +1884,7 @@
           }
           else {
               jk_log(xconf->log, JK_LOG_INFO, "Could not find a worker"
  -                   " for worker name=%s\n",
  +                   " for worker name=%s",
                      worker_name);
               JK_TRACE_EXIT(xconf->log);
               return HTTP_INTERNAL_SERVER_ERROR;
  @@ -2082,9 +2082,11 @@
                       apr_strerror(status, error, 254);
                       ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 
0,
                                    NULL,
  -                                 "mod_jk: jk_log_to_file %s failed: %s\n",
  +                                 "mod_jk: jk_log_to_file %s failed: %s",
                                    what, error);
                   }
  +                else
  +                    apr_file_putc('\n', p->jklogfp);
                   rv = apr_global_mutex_unlock(jk_log_lock);
                   if (rv != APR_SUCCESS) {
                       ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, NULL,
  @@ -2205,21 +2207,21 @@
   #if APR_HAS_THREADS
   #ifndef AS400
       ap_mpm_query(AP_MPMQ_MAX_THREADS, &mpm_threads);
  -#endif    
  +#endif
   #endif
       if (mpm_threads > 0)
           jk_set_worker_def_cache_size(mpm_threads);
       if (JK_IS_DEBUG_LEVEL(conf->log))
  -        jk_log(conf->log, JK_LOG_DEBUG, "Initialized %s\n", 
JK_EXPOSED_VERSION);
  +        jk_log(conf->log, JK_LOG_DEBUG, "Initialized %s", 
JK_EXPOSED_VERSION);
       JK_TRACE_EXIT(conf->log);
   }
   
  -/** Initialize jk, using worker.properties. 
  -    We also use apache commands ( JkWorker, etc), but this use is 
  +/** Initialize jk, using worker.properties.
  +    We also use apache commands ( JkWorker, etc), but this use is
       deprecated, as we'll try to concentrate all config in
       workers.properties, urimap.properties, and ajp14 autoconf.
  -    
  -    Apache config will only be used for manual override, using 
  +
  +    Apache config will only be used for manual override, using
       SetHandler and normal apache directives ( but minimal jk-specific
       stuff )
   */
  @@ -2230,7 +2232,8 @@
       jk_map_t *init_map = conf->worker_properties;
   
       if (!uri_worker_map_alloc(&(conf->uw_map),
  -                              conf->uri_to_context, conf->log)) {
  +                              conf->uri_to_context,
  +                              conf->log)) {
           jk_error_exit(APLOG_MARK, APLOG_EMERG, s, pconf, "Memory error");
       }
   
  @@ -2239,8 +2242,8 @@
           if (jk_map_size(init_map) == 0) {
               ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO,
                            APLOG_EMERG, NULL,
  -                         "No worker file and no worker options in httpd.conf 
\n"
  -                         "use JkWorkerFile to set workers\n");
  +                         "No worker file and no worker options in httpd.conf"
  +                         "use JkWorkerFile to set workers");
               return;
           }
       }
  @@ -2261,16 +2264,6 @@
   {
       apr_status_t rv;
   
  -    if (!s->is_virtual) {
  -        jk_server_conf_t *conf =
  -            (jk_server_conf_t *) ap_get_module_config(s->module_config,
  -                                                      &jk_module);
  -        if (!conf->was_initialized) {
  -            conf->was_initialized = JK_TRUE;
  -            init_jk(pconf, conf, s);
  -        }
  -    }
  -
       /* create the jk log lockfiles in the parent */
       if ((rv = apr_global_mutex_create(&jk_log_lock, NULL,
                                         APR_LOCK_DEFAULT,
  @@ -2290,20 +2283,28 @@
       }
   #endif
   
  -    /* step through the servers and
  -     * - open each jk logfile
  -     */
  -    for (; s; s = s->next) {
  -        if (open_jklog(s, pconf))
  -            return HTTP_INTERNAL_SERVER_ERROR;
  -
  +    if (!s->is_virtual) {
  +        jk_server_conf_t *conf =
  +            (jk_server_conf_t *) ap_get_module_config(s->module_config,
  +                                                      &jk_module);
  +        if (!conf->was_initialized) {
  +            server_rec *srv = s;
  +            conf->was_initialized = JK_TRUE;
  +            /* step through the servers and open each jk logfile.
  +             */
  +            for (; srv; srv = srv->next) {
  +                if (open_jklog(srv, pconf))
  +                    return HTTP_INTERNAL_SERVER_ERROR;
  +            }
  +            init_jk(pconf, conf, s);
  +        }
       }
   
       return OK;
   }
   
   /** Use the internal mod_jk mappings to find if this is a request for
  - *    tomcat and what worker to use. 
  + *    tomcat and what worker to use.
    */
   static int jk_translate(request_rec * r)
   {
  @@ -2322,14 +2323,14 @@
                    */
                   if (JK_IS_DEBUG_LEVEL(conf->log))
                       jk_log(conf->log, JK_LOG_DEBUG,
  -                           "Manually mapped, no need to call 
uri_to_worker\n");
  +                           "Manually mapped, no need to call uri_to_worker");
                   return DECLINED;
               }
   
               if (apr_table_get(r->subprocess_env, "no-jk")) {
                   if (JK_IS_DEBUG_LEVEL(conf->log))
                       jk_log(conf->log, JK_LOG_DEBUG,
  -                           "Into translate no-jk env var detected for 
uri=%s, declined\n",
  +                           "Into translate no-jk env var detected for 
uri=%s, declined",
                              r->uri);
   
                   return DECLINED;
  @@ -2364,7 +2365,7 @@
                   if (finfo.filetype != APR_REG) {
                       if (JK_IS_DEBUG_LEVEL(conf->log))
                           jk_log(conf->log, JK_LOG_DEBUG,
  -                               "JkAutoAlias, no DirectoryIndex file for URI 
%s\n",
  +                               "JkAutoAlias, no DirectoryIndex file for URI 
%s",
                                  r->uri);
                       return DECLINED;
                   }
  @@ -2393,7 +2394,7 @@
                   /* Automatically map uri to a context static file */
                   if (JK_IS_DEBUG_LEVEL(conf->log))
                       jk_log(conf->log, JK_LOG_DEBUG,
  -                           "mod_jk::jk_translate, check alias_dir: %s\n",
  +                           "mod_jk::jk_translate, check alias_dir: %s",
                              conf->alias_dir);
                   if (strlen(clean_uri) > 1) {
                       /* Get the context directory name */
  @@ -2419,13 +2420,13 @@
                           if (child_dir != NULL) {
                               if (JK_IS_DEBUG_LEVEL(conf->log))
                                   jk_log(conf->log, JK_LOG_DEBUG,
  -                                       "mod_jk::jk_translate, AutoAlias 
child_dir: %s\n",
  +                                       "mod_jk::jk_translate, AutoAlias 
child_dir: %s",
                                          child_dir);
                               if (!strcasecmp(child_dir, "WEB-INF")
                                   || !strcasecmp(child_dir, "META-INF")) {
                                   if (JK_IS_DEBUG_LEVEL(conf->log))
                                       jk_log(conf->log, JK_LOG_DEBUG,
  -                                           "mod_jk::jk_translate, AutoAlias 
HTTP_FORBIDDEN for URI: %s\n",
  +                                           "mod_jk::jk_translate, AutoAlias 
HTTP_FORBIDDEN for URI: %s",
                                              r->uri);
                                   return HTTP_FORBIDDEN;
                               }
  @@ -2454,7 +2455,7 @@
                               if (ret != NULL) {
                                   if (JK_IS_DEBUG_LEVEL(conf->log))
                                       jk_log(conf->log, JK_LOG_DEBUG,
  -                                           "mod_jk::jk_translate, AutoAlias 
OK for file: %s\n",
  +                                           "mod_jk::jk_translate, AutoAlias 
OK for file: %s",
                                              ret);
                                   r->filename = ret;
                                   return OK;
  @@ -2468,7 +2469,7 @@
                                                  ".war")) {
                                   if (JK_IS_DEBUG_LEVEL(conf->log))
                                       jk_log(conf->log, JK_LOG_DEBUG,
  -                                           "mod_jk::jk_translate, AutoAlias 
HTTP_FORBIDDEN for URI: %s\n",
  +                                           "mod_jk::jk_translate, AutoAlias 
HTTP_FORBIDDEN for URI: %s",
                                              r->uri);
                                   return HTTP_FORBIDDEN;
                               }
  @@ -2502,14 +2503,14 @@
                    */
                   if (JK_IS_DEBUG_LEVEL(conf->log))
                       jk_log(conf->log, JK_LOG_DEBUG,
  -                           "Manually mapped, no need to call 
uri_to_worker\n");
  +                           "Manually mapped, no need to call uri_to_worker");
                   return DECLINED;
               }
   
               if (apr_table_get(r->subprocess_env, "no-jk")) {
                   if (JK_IS_DEBUG_LEVEL(conf->log))
                       jk_log(conf->log, JK_LOG_DEBUG,
  -                           "Into map_to_storage no-jk env var detected for 
uri=%s, declined\n",
  +                           "Into map_to_storage no-jk env var detected for 
uri=%s, declined",
                              r->uri);
   
                   return DECLINED;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to