rse 98/05/05 07:04:22
Modified: src/modules/standard mod_rewrite.c
Log:
Repair mod_rewrite - Lars' patch Brain comitted was totally broken.
Thanks to Ben Hyde for immediately discovering this.
Revision Changes Path
1.103 +22 -15 apache-1.3/src/modules/standard/mod_rewrite.c
Index: mod_rewrite.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -r1.102 -r1.103
--- mod_rewrite.c 1998/05/05 04:47:59 1.102
+++ mod_rewrite.c 1998/05/05 14:04:20 1.103
@@ -943,11 +943,13 @@
void *sconf;
rewrite_server_conf *conf;
char *var;
- char *thisserver, *thisport, *thisurl;
+ const char *thisserver;
+ char *thisport, *thisurl;
char buf[512];
char docroot[512];
char *cp, *cp2;
struct stat finfo;
+ unsigned int port;
int n;
int l;
@@ -998,12 +1000,12 @@
*/
/* add the canonical URI of this URL */
- thisserver = (char *) ap_get_server_name(r);
- thisport = (char *) ap_get_server_port(r);
- if (is_default_port((int) thisport, r))
+ thisserver = ap_get_server_name(r);
+ port = ap_get_server_port(r);
+ if (is_default_port(port, r))
thisport = "";
else {
- ap_snprintf(buf, sizeof(buf), ":%u", thisport);
+ ap_snprintf(buf, sizeof(buf), ":%u", port);
thisport = buf;
}
thisurl = ap_table_get(r->subprocess_env, ENVVAR_SCRIPT_URL);
@@ -2249,8 +2251,10 @@
static void fully_qualify_uri(request_rec *r)
{
int i;
- char port[32];
+ char buf[32];
+ const char *thisserver;
char *thisport;
+ int port;
i = strlen(r->filename);
if (!( (i > 7 && strncasecmp(r->filename, "http://", 7) == 0)
@@ -2258,20 +2262,23 @@
|| (i > 9 && strncasecmp(r->filename, "gopher://", 9) == 0)
|| (i > 6 && strncasecmp(r->filename, "ftp://", 6) == 0))) {
- thisport = (char *) ap_get_server_port(r);
- if (is_default_port((int) thisport,r))
- port[0] = '\0';
- else
- ap_snprintf(port, sizeof(port), ":%u", thisport);
+ thisserver = ap_get_server_name(r);
+ port = ap_get_server_port(r);
+ if (is_default_port(port,r))
+ thisport = "";
+ else {
+ ap_snprintf(buf, sizeof(buf), ":%u", port);
+ thisport = buf;
+ }
if (r->filename[0] == '/')
r->filename = ap_psprintf(r->pool, "%s://%s%s%s",
- http_method(r), ap_get_server_name(r),
- port, r->filename);
+ http_method(r), thisserver,
+ thisport, r->filename);
else
r->filename = ap_psprintf(r->pool, "%s://%s%s/%s",
- http_method(r), ap_get_server_name(r),
- port, r->filename);
+ http_method(r), thisserver,
+ thisport, r->filename);
}
return;
}