tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cos...@apache.org
Subject cvs commit: jakarta-tomcat-connectors/jk/native/common jk_uri_worker_map.c
Date Wed, 07 Nov 2001 21:54:45 GMT
costin      01/11/07 13:54:45

  Modified:    jk/native/common jk_uri_worker_map.c
  Log:
  Add more 'generic' mapping.
  
  Thanks to Michael Jennings for the patch and patience !
  
  Submitted by:	 Michael Jennings <mike@southgatesoftware.com>
  
  Revision  Changes    Path
  1.10      +57 -15    jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c
  
  Index: jk_uri_worker_map.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jk_uri_worker_map.c	2001/09/28 09:18:17	1.9
  +++ jk_uri_worker_map.c	2001/11/07 21:54:45	1.10
  @@ -67,7 +67,7 @@
    * servlet container.                                                      *
    *                                                                         *
    * Author:      Gal Shachor <shachor@il.ibm.com>                           *
  - * Version:     $Revision: 1.9 $                                           *
  + * Version:     $Revision: 1.10 $                                           *
    ***************************************************************************/
   
   #include "jk_pool.h"
  @@ -77,6 +77,7 @@
   #define MATCH_TYPE_EXACT    (0)
   #define MATCH_TYPE_CONTEXT  (1)
   #define MATCH_TYPE_SUFFIX   (2)
  +#define MATCH_TYPE_GENERAL_SUFFIX (3) /* match all URIs of the form *ext */
   
   struct uri_worker_record {
       /* Original uri for logging */
  @@ -283,18 +284,31 @@
                       uwr->suffix      = asterisk + 3;
                       uwr->match_type  = MATCH_TYPE_SUFFIX;
                       jk_log(l, JK_LOG_DEBUG,
  -                           "Into jk_uri_worker_map_t::uri_worker_map_open, suffix rule
%s.%s=%s was added\n",
  -                            uri, asterisk + 3, worker);
  -                } else {
  -                        /* context based */
  -                        asterisk[1]      = '\0';
  -                        uwr->worker_name = worker;
  -                        uwr->context     = uri;
  -                        uwr->suffix      = NULL;
  -                        uwr->match_type  = MATCH_TYPE_CONTEXT;
  -                        jk_log(l, JK_LOG_DEBUG,
  -                              "Into jk_uri_worker_map_t::uri_worker_map_open, match rule
%s=%s was added\n",
  -                               uri, worker);
  +                           "Into jk_uri_worker_map_t::uri_worker_map_open, "
  +			   "suffix rule %s.%s=%s was added\n",
  +                            uri, asterisk + 3, worker); 
  +		} else if ('\0' != asterisk[2]) {
  +		    /* general suffix rule */
  +		    asterisk[1] = '\0';
  +		    uwr->worker_name = worker;
  +		    uwr->context = uri;
  +		    uwr->suffix  = asterisk + 2;
  +		    uwr->match_type = MATCH_TYPE_GENERAL_SUFFIX;
  +		    jk_log(l, JK_LOG_DEBUG,
  +			   "Into jk_uri_worker_map_t::uri_worker_map_open, "
  +			   "general suffix rule %s*%s=%s was added\n",
  +			   uri, asterisk + 2, worker);
  +		} else {
  +		    /* context based */
  +		    asterisk[1]      = '\0';
  +		    uwr->worker_name = worker;
  +		    uwr->context     = uri;
  +		    uwr->suffix      = NULL;
  +		    uwr->match_type  = MATCH_TYPE_CONTEXT;
  +		    jk_log(l, JK_LOG_DEBUG,
  +			   "Into jk_uri_worker_map_t::uri_worker_map_open, "
  +			   "match rule %s=%s was added\n",
  +			   uri, worker);
                   }
               } else {
                   /* Something like : JkMount /servlets/exampl* ajp13 */
  @@ -396,6 +410,18 @@
       return rc;
   }
   
  +/* returns the index of the last occurrence of the 'ch' character
  +   if ch=='\0' returns the length of the string str  */
  +int last_index_of(const char *str,char ch)
  +{
  +    const char *str_minus_one=str-1;
  +    const char *s=str+strlen(str);
  +    while(s!=str_minus_one && ch!=*s) {
  +	--s;
  +    }
  +    return (s-str);
  +}
  +
   int uri_worker_map_close(jk_uri_worker_map_t *uw_map,
                            jk_logger_t *l)
   {
  @@ -450,7 +476,8 @@
                       if(strlen(uri) == uwr->ctxt_len) {
   			jk_log(l,
   			       JK_LOG_DEBUG,
  -			       "jk_uri_worker_map_t::map_uri_to_worker, Found an exact match %s -> %s\n",
  +			       "jk_uri_worker_map_t::map_uri_to_worker, "
  +			       "Found an exact match %s -> %s\n",
   			       uwr->worker_name,
   			       uwr->context );
                           jk_reset_pool(&uw_map->tp);
  @@ -460,11 +487,26 @@
                       if(uwr->ctxt_len > longest_match) {
   			jk_log(l,
   			       JK_LOG_DEBUG,
  -			       "jk_uri_worker_map_t::map_uri_to_worker, Found a context match %s -> %s\n",
  +			       "jk_uri_worker_map_t::map_uri_to_worker, "
  +			       "Found a context match %s -> %s\n",
   			       uwr->worker_name,
   			       uwr->context );
                           longest_match = uwr->ctxt_len;
                           best_match = i;
  +                    }
  +		} else if(MATCH_TYPE_GENERAL_SUFFIX == uwr->match_type) {
  +                    int suffix_start=last_index_of(uri,uwr->suffix[0]);
  +                    if (suffix_start>=0 && 0==strcmp(uri+suffix_start,uwr->suffix))
{
  +			if(uwr->ctxt_len >= longest_match) {
  +			    jk_log(l,
  +				   JK_LOG_DEBUG,
  +				   "jk_uri_worker_map_t::map_uri_to_worker, "
  +				   "Found a general suffix match %s -> *%s\n",
  +				   uwr->worker_name,
  +				   uwr->suffix );
  +			    longest_match = uwr->ctxt_len;
  +			    best_match = i;
  +			}
                       }
                   } else /* suffix match */ {
                       int suffix_start;
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>


Mime
View raw message