Re: 3.0 - Proposed Goals

2007-02-27 Thread Jim Jagielski
Sander Temme wrote:
 
 How many Apache 'D' versions do we want to maintain?  Popularity of  
 1.3 is still too high for us to completely ignore, and there is much  
 2.0 still out there.
 

Any many people taking up 2.2...

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


Re: Board Report is due on Monday....

2007-02-27 Thread Jim Jagielski
Paul Querna wrote:
 
 Events since November:
 - mod_ftp graduates from incubator httpd tlp
 - next generation aka 'amsterdamn' discussions started

with sandbox creation.

 - TSU encryption notifications sent for httpd and flood.
 - httpd 2.2.4 released
 - no pmc changes or committer changes
 - mod_wombat IP clearance done. (import happening RSN)
 
 Anything else anyone can come up with?
 

Not really.


-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


Re: Using mod_proxy from another module

2007-02-28 Thread Jim Jagielski

Yep. No problem.

On Feb 21, 2007, at 4:50 AM, Marc Stern wrote:


Is it also possible to make a post with this ?
This is what I need.


Jim Jagielski wrote:
How could we use mod_proxy for outgoing connections from another  
module ?

Is there any simple way ?
Is there any standard (I mean documented) way, or would it rely  
on internals only ? In the latter case, we would have to recode  
everything when mod_proxy changes.




You would do something like this:

rr = ap_sub_req_method_uri(OPTIONS, *, r, NULL); /* this  
MUST succeed! */

apr_snprintf(newurl, sizeof(newurl),
proxy:%s://%s:%d/%s,
protocol, sendToIP, sendToPort, myURL);
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r-server,
query constructed: %s, newurl);
rr-filename = apr_pstrdup(r-pool, newurl);
rr-proxyreq = PROXYREQ_REVERSE;
rr-handler  = proxy-server;
ap_run_sub_req(rr);

and then use the response as needed... The above I've used
in some where I'm just interested in getting some backend
header info...







sed filter module

2007-03-13 Thread Jim Jagielski

There have been times when having a simple sed filter in Apache
would be useful... I used to use just ext_filter to do this,
but this got more and more painful the more I used it. So awhile
ago I made mod_sed_filter which I find pretty useful. I've just
built and tested in with 2.2 and trunk...

Anyone mind if I fold it into trunk and maybe have us
consider making it part of 2.2 (even under experimental)?

No docs yet but the code is:

http://people.apache.org/~jim/code/mod_sed_filter.c

and the usage is easy:

AddOutputFilterByType SEDFILTER text/html
Sed s/foo/bar/in
Sed s#monkey(hat)#chimp-$1#i
Sed s/works/functions/in

note that it uses sed line controls, flexible
delims and support regex and simple pattern match (the 'n'
flag... no real sed option there ;) )


Re: sed filter module

2007-03-13 Thread Jim Jagielski


On Mar 13, 2007, at 1:10 PM, William A. Rowe, Jr. wrote:



Is this sed or pcre syntax?  I'm a bit confused :)



It's a mutant ;) But, of course, we maintain
that confusion internally with regex's being pcre...


Although it's sed-ish, is it misleading to confuse the user with the
phrase sed considering the unsupported constructs?  E.g. I presume
the more complex sed language features aren't present.

I'm wondering if mod_pcre_filter wouldn't be more accurate?



'sed' certainly gets the message across though :)
But basically it allows for regex pattern matching
and substitution in a very sed-like way.

By agreed that docs would help this


Re: sed filter module

2007-03-13 Thread Jim Jagielski


On Mar 13, 2007, at 2:08 PM, Nick Kew wrote:



AFAICS, this not merely looks like mod_line_edit: the filter *is*
mod_line_edit, right down to the bucket manipulation logic used as
an example in The Book!  It's just missing a couple of minor features,
and has a slightly different configuration syntax.  The other  
difference

is 15 months out there in widespread use.



What logic? Let me know what sections you mean because
most of what I based it on is stuff from mod_include
and mod_proxy_ftp.c (and other ASF modules). I don't see
anything in either module which is new or not done by
any other modules out there that need to split out sections
from buckets.

Bill told me about mod_line_edit maybe 3-4 days ago.
I had known about mod_proxy_html, which is also something
we've pointed clients to, so maybe that's where
the confusion comes from.



Re: sed filter module

2007-03-13 Thread Jim Jagielski


On Mar 13, 2007, at 3:34 PM, William A. Rowe, Jr. wrote:


Jim Jagielski wrote:


On Mar 13, 2007, at 1:10 PM, William A. Rowe, Jr. wrote:



Is this sed or pcre syntax?  I'm a bit confused :)


It's a mutant ;) But, of course, we maintain
that confusion internally with regex's being pcre...


Of course :)  But it appears to be a tiny fraction of the sed  
language...



Although it's sed-ish, is it misleading to confuse the user with the
phrase sed considering the unsupported constructs?  E.g. I presume
the more complex sed language features aren't present.

I'm wondering if mod_pcre_filter wouldn't be more accurate?


'sed' certainly gets the message across though :)
But basically it allows for regex pattern matching
and substitution in a very sed-like way.


since it is only a pattern substitution subset, I'd prefer to see some
RewriteBody directive or similar.  As I'm looking at the module,  
I'm more

convinced that Sed foo should be reserved for at least a basic sed
implementation that implemented (at least!) the pre-GNU language  
subset.




:)

Well, like I said, the main issue was avoiding the overhead of
having mod_ext_filter do simple in-line replacements by calling
sed to do 's/foo/bar/'... So yeah, it's closer to what a Perl
guy would think than a Unix sed-head :)



Re: sed filter module

2007-03-14 Thread Jim Jagielski


On Mar 14, 2007, at 5:07 AM, Frank wrote:



RewriteBodyLine 'http://(.*?)/(.*)/(.*)' 'http://${LOWERCASE:$1}/$ 
{MD5:$2}/$3'




Yeah, that would be useful... Of course, the main issue is
that whereas mod_rewrite can afford to be dog slow, because,
after all, the URLs aren't *that* big, in-place rewriting
of content can't be. The more complex the functionality,
the slower it will be... :/


Re: sed filter module

2007-03-14 Thread Jim Jagielski


On Mar 14, 2007, at 11:01 AM, Nick Kew wrote:


Oh, I guess you mean the copying to get a null-terminated string
when applying a regexp?  And I see it's repeated for every regexp
(ouch)!  mod_line_edit uses a local pool which is cleared at the
end of each brigade, and avoids multiple copies of the same buffer.



Hmmm... I'm confused. The way I do it is:

loop over sed scripts
  loop over buckets
read bucket
  make copy of bucket data for regex comparison

so everytime we read in bucket data, I have to make
a null-termed string. It changes with each bucket.
So I don't understand the issue with it being repeated
for every regexp. How can that be avoided?

I reuse allocated space (I don't just simply keep
making strdups)... so yeah, there will be a chunk
of allocated spool still hanging around. So maybe
making that a subpool and then clearing/destroying
it would be best.


Re: sed filter module

2007-03-14 Thread Jim Jagielski

As a rough proof of concept, I refactored the design,
allowing for the pattern matching and substitution to be
done as soon as we have a line. Also is some
rough ability to pass the data to the next filter
after we get more than ~AP_MIN_BYTES_TO_WRITE bytes.
Doesn't alleviate all the problems, but it allows
for us to pass data quicker (we still have the issue
where we need to fully read in the bb though...)
It's rough but passes superficial testing...

More work needs to be done, but more people could
work on it if I just commit to trunk :)

Same URL, different version:

http://people.apache.org/~jim/code/mod_sed_filter.c



sed and offline

2007-03-15 Thread Jim Jagielski

I'll be offline most of tomorrow and pretty much the whole
weekend. Unless I hear vetos, I'll commit the latest
mod_sed_filter.c to trunk. If we change the name, which
is fine with me, well... that's the joy of svn move :)


Re: mod_proxy patches

2007-03-19 Thread Jim Jagielski


On Mar 16, 2007, at 8:52 AM, Mathias Herberts wrote:



I agree that reusing the backend connections can be a good thing, but
there are times when this is just not a very good idea.



I agree that there are times when having a single-shot
connection is better than having a pool. It's
certainly not a normal situation but for those people
affected by this, it's a deal-breaker.


Re: [PATCH] ProxyAddXHeaders for mod_proxy

2007-04-04 Thread Jim Jagielski


On Feb 28, 2007, at 11:59 AM, Dziugas Baltrunas wrote:


Hi, list,

attaching same patch with small correction to the one submitted
previously (was unnecessary double check for PROXYREQ_REVERSE).

Patch is for httpd-2.2.x branch.



Patches should be against trunk. Once approved
and proven in the trunk environ, then they
may be proposed for backporting to 2.2.x




Re: Bug 41897 / Session-Stickiness with mod_proxy_balancer

2007-04-04 Thread Jim Jagielski


On Apr 4, 2007, at 8:46 AM, Plüm, Rüdiger, VF-Group wrote:



But this means that we break the ABI here. If struct proxy_balancer  
is part
of a public API (I am not sure about this) this would require a  
major bump

and would prevent backporting.


Since the whole idea of loadable lb method via providers
implies an external API to do this, I consider it a public API.



But r-subprocess_env is a table and apr_table_get is never case  
sensitive.

So the case parameter does not make sense for environment variables.
To be honest I do not understand why we need the case parameter at  
all (also
for cookie and path). I did not understand the hint you gave  
regarding PHP

and ASP on Jean-Frederic's question on the same matter.



FWIW, neither did I.



Re: Bug 41897 / Session-Stickiness with mod_proxy_balancer

2007-04-04 Thread Jim Jagielski


On Apr 4, 2007, at 9:38 AM, Mladen Turk wrote:


Plüm wrote:



Yes, although MAX_ENTRIES would be 3 for now
(cookie, path and env)
But this means that we break the ABI here. If struct  
proxy_balancer is part
of a public API (I am not sure about this) this would require a  
major bump

and would prevent backporting.



The other solution is to keep that in balancer-sticky
separated by / (think %2f is unacceptable char anyhow)
and do a strtok inside find_session_route.



Hmmm... I like this idea. Not sure about the use of '/'
as the delim (simply because of its other meanings) but
that's secondary.

Of course, we can't use strtok, since sticky is a const
char and we can't be shoving NULLs in there :)



Re: Bug 41897 / Session-Stickiness with mod_proxy_balancer

2007-04-04 Thread Jim Jagielski


On Apr 4, 2007, at 10:27 AM, Plüm, Rüdiger, VF-Group wrote:



Hmmm... I like this idea. Not sure about the use of '/'
as the delim (simply because of its other meanings) but
that's secondary.

Of course, we can't use strtok, since sticky is a const
char and we can't be shoving NULLs in there :)


Plus does it make sense to split the sticky string everytime we search
for a route? From my performance feeling this split should be done  
during

configuration time.


Agreed... It doesn't change.


How about adding either a const char * some_name[FIXED_VALUE] or an
apr_array_header_t * to the end of struct proxy_balancer to store  
the results
of the split and setting sticky = some_name[last_non_null_entry]  
for backward

compatibility?



We already have an existing context we could overload
or simply append another element to the struct.

Of course, doing that really confuses the whole issue, since
we're doing all these weird things to get around changing
sticky from a const char* to a apr_array_header_t*...

Sooo... how about in trunk making it right (sticky -  
apr_array_header_t*)

and in 2.2 appending sticky_table (apr_array_header_t*)...

Re: Bug 41897 / Session-Stickiness with mod_proxy_balancer

2007-04-04 Thread Jim Jagielski


On Apr 4, 2007, at 11:34 AM, Georg von Zezschwitz wrote:


Jim Jagielski schrieb:

Rüdiger's point is that we would be doing the scanning
for each and every request, which is wasteful since they
aren't changing. Even in the above the strlen() is
counting chars that don't change between requests.


the performance aspect is why I would also prefer the arbitrary  
sequence of stickysession-attributes

with an optional Cookie/Path-prefix.

Currently, the URL path search is performed before the Cookie search.
I do not know why this sequence was chosen (most users will rather  
support cookie-based

session management, so the URL approach is less likely to match).
If we state that the evaluation takes place in the occurence of  
stickysession attributes

and suggest

   stickysession=Cookie:JSESSIONID stickysession=Path:;jsessionid  
to the user


it will perform faster in average.

As I promised to write the patch, I would do it the way Jim  
suggested it for backward
compatibility, however I would also add a table sticky_type  
containing the Cookie vs.

Path vs. Env-prefix (in a parsed way) to the balancer struct.

Is this OK for everybody?



Patch for trunk...

Re: mod_ftp enhancements - group directories

2007-04-06 Thread Jim Jagielski


On Apr 5, 2007, at 7:16 PM, Filip Hanik - Dev Lists wrote:


I would like to propose two enhancements to mod_ftp.
The same way we have FTPJailUser and CreateHomeDir directives, we  
would need


FTPJailGroup and CreateGroupDirs directives.
This would allow us manage FTP files based on groups, rather than  
single individual users.




Of course, this would only make sense for those
auth mechanisms that support the concept of groups

Thoughts? Anyone interested? (too far down the java trench to be  
capable of providing a patch)


Filip





Re: mod_proxy buffering small chunks

2007-04-12 Thread Jim Jagielski


On Apr 11, 2007, at 3:34 PM, Ruediger Pluem wrote:




On 04/11/2007 06:42 PM, Filipe wrote:

I'm trying to use apache to proxy a push application, using chunked
transfer
encoding. The problem is that the mod_proxy buffers the server  
response
internally and only sends the data to the client when the buffer  
is filled

or the connection with the server is terminated.

This behavior is not adequate for push applications, where the  
response

must
be redirected instantly to the http client.

This problem was discussed a year ago:
http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/raw/ 
[EMAIL PROTECTED]/


This is only fixed in trunk so far. See
http://issues.apache.org/bugzilla/show_bug.cgi?id=41056
and
http://svn.apache.org/viewvc?view=revrevision=480135



Hmmm. Looks like a backport candidate... I'll likely
do some testing and propose if it works :)



Re: ProxyErrorOverride and redirects (PR 39245)

2007-04-12 Thread Jim Jagielski


On Apr 12, 2007, at 10:16 AM, Joe Orton wrote:


On Thu, Apr 12, 2007 at 10:05:06AM -0400, Jeff Trawick wrote:

I wonder why Error in ProxyErrorOverride doesn't match the meaning
of ap_is_HTTP_ERROR(), as in the attached patch (with doc).


Great, +1


1xx isn't something the user should see/react to either.


Forwarding 1xx responses is actually a 2616 MUST, but they don't have
bodies so are handled separately in this code anyway (though are  
not in

fact forwarded IIRC).



Agreed.



Re: mod_proxy buffering small chunks

2007-04-13 Thread Jim Jagielski


On Apr 13, 2007, at 5:20 AM, Mladen Turk wrote:



Anyhow, I'll commit a patch to the trunk for http, cause its
configurable by flushwait and skipped otherwise.



Looking forward to seeing it... recall that if we flush at
every chunk with HTTP, we will be dead slow and filters
will not be happy :)



Re: mod_proxy buffering small chunks

2007-04-13 Thread Jim Jagielski


On Apr 13, 2007, at 5:20 AM, Mladen Turk wrote:


Plüm wrote:

+1 I will try to check it once you have proposed it and give it
a quick vote.

I have another one that fixes this issues for non-chunked content.

I haven't tried yet, but IMHO it should already work for non-chunked
content. Is this not the case?



Not according to my tests. The simple server push still
buffers the data.



Hmmm a followup commit has:

  URL: http://svn.apache.org/viewvc?view=revrev=504559
  Log:
  Further refinement for PR41056 / PR 19954 (mostly-fixed in r480135.)
  We assume that a successful read but an empty brigade
  is NOT cause for EAGAIN. Testing may or may not
  confirm this assumption, in which case that test
  may be required as well.

so that may be exactly the case...


Re: mod_proxy buffering small chunks

2007-04-13 Thread Jim Jagielski


On Apr 13, 2007, at 11:34 AM, Jim Jagielski wrote:



On Apr 13, 2007, at 5:20 AM, Mladen Turk wrote:


Plüm wrote:

+1 I will try to check it once you have proposed it and give it
a quick vote.

I have another one that fixes this issues for non-chunked content.

I haven't tried yet, but IMHO it should already work for non-chunked
content. Is this not the case?



Not according to my tests. The simple server push still
buffers the data.



Hmmm a followup commit has:

  URL: http://svn.apache.org/viewvc?view=revrev=504559
  Log:
  Further refinement for PR41056 / PR 19954 (mostly-fixed in r480135.)
  We assume that a successful read but an empty brigade
  is NOT cause for EAGAIN. Testing may or may not
  confirm this assumption, in which case that test
  may be required as well.

so that may be exactly the case...



I refer people to

  http://mail-archives.apache.org/mod_mbox/httpd-dev/200702.mbox/% 
[EMAIL PROTECTED]


... so maybe a successful read of an empty line in AP_MODE_GET_LINE
does *not* return an empty brigade... We currently assuming
it does.

Anyone able to test if Rüdiger's version addresses this?



Re: mod_proxy buffering small chunks

2007-04-13 Thread Jim Jagielski


On Apr 13, 2007, at 12:03 PM, Mladen Turk wrote:


Jim Jagielski wrote:


Not according to my tests. The simple server push still
buffers the data.


Hmmm a followup commit has:
  URL: http://svn.apache.org/viewvc?view=revrev=504559
so that may be exactly the case...


Huh, looks like it works now. Although I didn't test is with
mod_deflate, but I suppose it should work as well.

Can we get those back trough 2.0?



Def for 2.2 (maybe you were testing 2.2 and not
trunk??)... I'll see how much can actually
go to 2.0 :)



Re: RFE -- external overload procedure

2007-04-26 Thread Jim Jagielski

It would be best, I think, if the patches actually used normal
httpd coding standards... The whole MAX_OVLP_LINE stuff is very
out of place.

On Apr 25, 2007, at 10:02 AM, Juerg Umhang wrote:


its now in bugzilla. patches submitted
http://issues.apache.org/bugzilla/show_bug.cgi?id=42216

-- juerg


On 4/20/07, Juerg Umhang [EMAIL PROTECTED] wrote:

hello

please consider this posting as a request for enhancement

httpd knows about his overload situation.
 [error] server reached MaxClients setting, consider raising the
MaxClients setting
this overload is easily created by an external attacker. in case  
of an

attack you have to react.
best done on a lower osi-layer (iptables, pf, ...).
realtime log analysis has his own odds and twists. we would prefer a
call
to an 'external helper procedure'.



in this context we have some questions:
-- do you think it makes sense to implement this feature ?
-- could it be done in a module (without the overhead of going  
through

the
scoreboard for each pre_connection call) ?


It is reasonable to me for httpd to provide a module interface (hook)
so that a third-party module can take action when httpd reaches the
MaxClients (Unix) or ThreadsPerChild (Windows) condition.  (Maybe the
hook just provides some basic statistics, and the module can  
determine

whether the absolute limit has been reached or its own configurable
threshhold has been reached.)

A way that a module can do something reasonable without modifying the
server is to create a separate child process that monitors the
scoreboard at its own interval, and takes whatever action is
appropriate.  That check can be infrequent enough that the  
performance

overhead is negligible.


-- can we expect this enhancement in a future release ?


Some other committer can speak for themselves, but I wouldn't expect
it without a patch submitted.


btw: we hope to see separately configurable timeouts (
http://httpd.apache.org/docs/2.2/mod/core.html#timeout ) very soon.


I don't recall anyone here interested in fulfilling the goal  
expressed

in that comment.








Re: mod_ftp, status and progress?

2007-04-26 Thread Jim Jagielski


On Apr 18, 2007, at 1:22 PM, Guenter Knauf wrote:


Hi,
the current code fails to build for Win32 target.
This is because ftp_glob.c seems not APR-ised yet;


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...


Re: Store data accessible by all process and threads.

2007-04-26 Thread Jim Jagielski


On Apr 19, 2007, at 6:25 PM, moh bad wrote:


Hi,

within a module,
what is the best way to store data, who need to be accessible to  
all threads and process ?


1/ using shared memory, with apr_shm_*



#1


Re: Store data accessible by all process and threads.

2007-04-26 Thread Jim Jagielski


On Apr 21, 2007, at 12:28 AM, Saju Pillai wrote:



Read-Write data ? shm is ok. Any standard IPC should work.



apr provides this.


Re: bug with Apache 1.3 NetWare build system

2007-04-26 Thread Jim Jagielski


On Apr 23, 2007, at 1:20 PM, Brad Nicholes wrote:



+1, go ahead and commit it.

Brad



+1


Re: Patch for implementing ap_document_root as a hook

2007-04-26 Thread Jim Jagielski


On Apr 23, 2007, at 10:46 AM, Brian J. France wrote:



On Apr 23, 2007, at 10:32 AM, Jakob Goldbach wrote:

-1 on the face of things.  The map_to_storage hook was added to  
accomplish

what you desire.


I thought map_to_storage was made to do per-dir configuration. Not
path-translation.

The problem is not really doing the translation. I can always provide
my own translate handler in my module.

But in the current API I cannot to set my env. variables at will.  
They

will be overwritten by ap_add_common_vars which returns
carved-in-stone docroot from ap_document_root.


We need this same functionality (would like to back port to 2.2 if  
possible).




I'm +1 on the concept but -0 on the provided method of
doing it...

We currently hack the doc root in the post read hook in 1.3, would  
like to be able to do it with out hacking the core and screwing  
around with internal structs at runtime.




VERY doubtful that 1.3 will be updated to do this.



Re: mod_ftp, status and progress?

2007-04-26 Thread Jim Jagielski


On Apr 26, 2007, at 8:55 AM, Niklas Edmundsson wrote:


On Thu, 26 Apr 2007, Jim Jagielski wrote:



On Apr 18, 2007, at 1:22 PM, Guenter Knauf wrote:


Hi,
the current code fails to build for Win32 target.
This is because ftp_glob.c seems not APR-ised yet;


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...


Wouldn't apr_match_glob() be a better starting point? I don't  
really see the point of going via regexes...




I was thinking for 2.0.x compatibility...


Re: mod_ftp, status and progress?

2007-04-26 Thread Jim Jagielski


On Apr 26, 2007, at 9:22 AM, Jim Jagielski wrote:



On Apr 26, 2007, at 8:55 AM, Niklas Edmundsson wrote:


On Thu, 26 Apr 2007, Jim Jagielski wrote:



On Apr 18, 2007, at 1:22 PM, Guenter Knauf wrote:


Hi,
the current code fails to build for Win32 target.
This is because ftp_glob.c seems not APR-ised yet;


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...


Wouldn't apr_match_glob() be a better starting point? I don't  
really see the point of going via regexes...




I was thinking for 2.0.x compatibility...



which, of course, implies apr_fnmatch and not apr_match_glob...


Re: DO NOT REPLY [Bug 39710] - mod_cgi truncates error replies

2007-04-26 Thread Jim Jagielski


On Apr 26, 2007, at 11:58 AM, Nick Kew wrote:


On Thu, 26 Apr 2007 07:21:27 -0700 (PDT)
[EMAIL PROTECTED] wrote:


--- Additional Comments From [EMAIL PROTECTED]  2007-04-26
07:21 --- (In reply to comment #7)

Anything I can do to help get this bug fixed?  Is testing the patch
all that stands in the way of getting it folded into the trunk?


Hello?  Anybody home?  What's next?


He has a good point: this bug is a regression.

I'm not entirely clear on the problem that was being fixed
in the patch that introduced it.  But it looks like confusion
between different CGI error paths.

If noone has the round tuits to work through a fix, can we just
apply the patch (which reverses r231167)?



Can we confirm that we don't still suffer from the original
problem?



Re: mod_ftp, status and progress?

2007-04-27 Thread Jim Jagielski


On Apr 26, 2007, at 5:39 PM, Niklas Edmundsson wrote:


On Thu, 26 Apr 2007, Jim Jagielski wrote:


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...
Wouldn't apr_match_glob() be a better starting point? I don't  
really see the point of going via regexes...


I was thinking for 2.0.x compatibility...


Wouldn't it be better to focus on 2.2.x and onwards? OK, there's a  
lot of people still running 1.3 and 2.0, but that doesn't mean that  
we have to make it run on all of them...




Why? Really, it's no big deal to ensure it runs on both.



Re: Releases around ApacheCon EU?

2007-04-27 Thread Jim Jagielski


On Apr 26, 2007, at 5:52 PM, Sander Temme wrote:


Community,

As ApacheCon draws near, perhaps we should plan some httpd releases  
during the week?  Between beer and bitterballen there must be time  
to bat some patches around(1).  Going in with the intention of,  
say, a TR on Wednesday after the Tuesday Hackathon should get us  
in the right frame of mind to get something out by the end of the  
week.


I'd like to try my hand at the TR process so if no one objects I  
volunteer to play RM.


-- 1.3.x, any patches that justify a release?

-- 2.0.x There are some backports in need of votes.  There seems  
to be only one patch to APR 0.9.x since the last release, do we  
need one?


-- 2.2.x IIRC the initial intent was to roll 2.2.5 fairly quickly  
after 2.2.4, but that never happened.  Many changes to APR 1.2.x,  
we'll likely need a new release of that.




I think this is a good idea... have people review STATUS and start  
voting.

Yeah, my hope was to get a 2.2.5 out semi-quickly, I think with the
various proxy changes, it's time, but I was holding off because there
are quite a few backports missing just 1 vote.



Re: SatisfyOne

2007-04-27 Thread Jim Jagielski

Are you sure that there are no other conflicting ACLs?

On Apr 27, 2007, at 1:30 PM, Patrick Welche wrote:


Basically, bug or configuration error?

Using httpd trunk 529626, of Apr 19 2007, I tried a FAQ configuration
with the new authentication framework:

Directory /usr/local/share/httpd/htdocs/learn
AuthType basic
AuthName raven test
AuthBasicProvider file
AuthUserFile /usr/local/etc/pass.txt
SatisfyOne
Require host quartz.itdept.newn.cam.ac.uk
Require ip 192.168.200.180
Require valid-user
/SatisfyOne
/Directory

quartz% hostname
quartz.itdept.newn.cam.ac.uk
quartz% lynx http://test.itdept.newn.cam.ac.uk/learn
Alert!: Access without authorization denied -- retrying
Username for 'raven test' at server 'test.itdept.newn.cam.ac.uk':

I expected not to be prompted to login by the above configuration.
(also tried AuthBasicAuthoritative Off, and have read the fine  
manual..)


Cheers,

Patrick





Re: mod_ftp, status and progress?

2007-04-28 Thread Jim Jagielski


On Apr 27, 2007, at 5:18 PM, Niklas Edmundsson wrote:


On Fri, 27 Apr 2007, Jim Jagielski wrote:


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...
Wouldn't apr_match_glob() be a better starting point? I don't  
really see the point of going via regexes...

I was thinking for 2.0.x compatibility...
Wouldn't it be better to focus on 2.2.x and onwards? OK, there's  
a lot of people still running 1.3 and 2.0, but that doesn't mean  
that we have to make it run on all of them...


Why? Really, it's no big deal to ensure it runs on both.


I'm not against keeping compatibility. However I feel that the  
right way to do it would be to design stuff for current httpd and  
then add glue for the backward compat stuff (and not doing it the  
#ifdef-mess-way).


So, going for regexes just because apr_match_glob() doesn't exist  
in 2.0.x seems a bit sub-optimal...




The idea was either to redo ftp_glob via regexes or
simply use apr_fnmatch... The emulate was to allow for
extensions to simple globing, which could make
the FTP module more useful, but, of course, client
support would be lacking. But really, again, I repeat that
it's no big deal to ensure it runs on both. Even if
we simply just create ftp_match_glob() from apr_match_glob().

And, fwiw, mod_ftp was originally written *for* 2.0.x, not
2.2.x. So most of the work had been in getting it
to work with the current httpd.

But if anyone does anything to prevent mod_ftp from
building on 2.0.x, expect a big -1.


Re: mod_ftp, status and progress?

2007-04-28 Thread Jim Jagielski


On Apr 28, 2007, at 1:34 PM, Jim Jagielski wrote:



On Apr 27, 2007, at 5:18 PM, Niklas Edmundsson wrote:


On Fri, 27 Apr 2007, Jim Jagielski wrote:


I'm actually looking at removing the whole glob stuff
and emulating it as regexes...
Wouldn't apr_match_glob() be a better starting point? I don't  
really see the point of going via regexes...

I was thinking for 2.0.x compatibility...
Wouldn't it be better to focus on 2.2.x and onwards? OK, there's  
a lot of people still running 1.3 and 2.0, but that doesn't mean  
that we have to make it run on all of them...


Why? Really, it's no big deal to ensure it runs on both.


I'm not against keeping compatibility. However I feel that the  
right way to do it would be to design stuff for current httpd and  
then add glue for the backward compat stuff (and not doing it the  
#ifdef-mess-way).


So, going for regexes just because apr_match_glob() doesn't exist  
in 2.0.x seems a bit sub-optimal...




The idea was either to redo ftp_glob via regexes or
simply use apr_fnmatch... The emulate was to allow for
extensions to simple globing, which could make
the FTP module more useful, but, of course, client
support would be lacking. But really, again, I repeat that
it's no big deal to ensure it runs on both. Even if
we simply just create ftp_match_glob() from apr_match_glob().

And, fwiw, mod_ftp was originally written *for* 2.0.x, not
2.2.x. So most of the work had been in getting it
to work with the current httpd.

But if anyone does anything to prevent mod_ftp from
building on 2.0.x, expect a big -1.



In fact, to be honest, it would be easier still to just
update ftp_direntry_get() to use apr_fnmatch(), since we
always want to support globing. ftp_direntry_get already
does most of what makes apr_match_glob attractive in
the 1st place.


Re: mod_ftp, status and progress?

2007-05-02 Thread Jim Jagielski


On Apr 28, 2007, at 1:40 PM, Jim Jagielski wrote:



In fact, to be honest, it would be easier still to just
update ftp_direntry_get() to use apr_fnmatch(), since we
always want to support globing. ftp_direntry_get already
does most of what makes apr_match_glob attractive in
the 1st place.



Should have a patch to commit later on tomorrow,
after some more tests :)


Re: mod_ftp, status and progress?

2007-05-03 Thread Jim Jagielski


On May 3, 2007, at 4:37 AM, William A. Rowe, Jr. wrote:


Niklas Edmundsson wrote:

On Wed, 2 May 2007, Jim Jagielski wrote:


In fact, to be honest, it would be easier still to just
update ftp_direntry_get() to use apr_fnmatch(), since we
always want to support globing. ftp_direntry_get already
does most of what makes apr_match_glob attractive in
the 1st place.



Should have a patch to commit later on tomorrow,
after some more tests :)


I suspect that you're fixing the large file issues while you're at  
it?


Another thing I noticed when we started to look at mod_ftp  
(looking at

strace/truss-output trying to figure out why things didn't work) was
that it stats all entries in a directory twice, first explicitly and
then via the subreq. Wouldn't the subreq be enough? It's no biggie  
for
now, but it would be nice to get rid of unneccessary stats as a  
bonus ;)


This is a separate issue; we need to refactor out 90% of the  
subrequests

and treat these at top level requests.



Agreed... Some of them, of course, we can't get rid
of, and the current design was basically for ease of
development.



Re: mod proxy disabling workers after a single error

2007-05-04 Thread Jim Jagielski


On May 4, 2007, at 11:37 AM, Brian Hayward wrote:



I have 2 questions:
1) What are the negative implications of disabling this?
2) Is there a cleaner way to accomplish this?


So you just want to setup Apache so that even if it
thinks there's an error, to just ignore it?



Re: mod proxy disabling workers after a single error

2007-05-04 Thread Jim Jagielski

Well, I doubt completely bypassing setting works to
being in the error state is something you want to do
lightly. :)

PROXY_WORKER_IGNORE_ERRORS is used when setting up
the generic forward and reverse workers, since they
are shared for all requests and not specific
to a balancer/url. I guess allowing someone
to set that as an option might be a potential
enhancement...

On May 4, 2007, at 2:16 PM, Brian Hayward wrote:


Yea, as it currently stands, one timeout is causing us to lose up to
10 more transactions during the next second (with retry=1)

Thanks,
Brian Hayward




On 5/4/07, Jim Jagielski [EMAIL PROTECTED] wrote:


On May 4, 2007, at 11:37 AM, Brian Hayward wrote:


 I have 2 questions:
 1) What are the negative implications of disabling this?
 2) Is there a cleaner way to accomplish this?

So you just want to setup Apache so that even if it
thinks there's an error, to just ignore it?








CHANGES file for 1.3 and 2.x

2007-05-07 Thread Jim Jagielski

Seems to me that the more we work on the various 2.x trees
(2.0.x, 2.2.x and trunk), the harder it becomes to get
the various correct CHANGES entries in sync... For example,
the CHANGES for 2.2 and trunk just refer to changes up
to 2.0.56... What's the best way of syncing these? Should
we stop having a single CHANGES that tries to merge all
development together? Why not have something like:

  o Apache 1.3.x: CHANGES stay as is
  o Apache 2.0.x: CHANGES just incorporates 2.0.x work
  and we can either URL refer to older changes
  at the bottom of the file or, when we release,
  merge them.
  o Apache 2.2.x: CHANGES just notes 2.2.x work and we
  either refer to 2.0.x CHANGES and 1.3.x CHANGES
  or auto-merge when we release.
  o : Same pattern...

Comments? Ideas?



Re: svn commit: r536291 - in /httpd/httpd/branches/2.2.x: STATUS modules/proxy/proxy_util.c

2007-05-09 Thread Jim Jagielski


On May 9, 2007, at 8:18 AM, Roy T. Fielding wrote:


On May 8, 2007, at 11:25 AM, [EMAIL PROTECTED] wrote:

+#define USE_ALTERNATE_IS_CONNECTED 1
+
+#if !defined(APR_MSG_PEEK)  defined(MSG_PEEK)
+#define APR_MSG_PEEK MSG_PEEK
+#endif
+
+#if USE_ALTERNATE_IS_CONNECTED  defined(APR_MSG_PEEK)


Huh?  Why are we polluting macro space with useless defines?



The USE_ALTERNATE_IS_CONNECTED is to allow that section
to be bypassed (although it should be protected
by a ifndef USE_ALTERNATE_IS_CONNECTED to allow
compile time changes I'm guessing). The APR_MSG_PEEK
is so when APR is updated to reflect the
existence of APR_MSG_PEEK, we don't need to touch
this code. Finally, the older version assumed
that MSG_PEEK was defined and the compile would
barf if not; this avoid that.




Re: svn commit: r536291 - in /httpd/httpd/branches/2.2.x: STATUS modules/proxy/proxy_util.c

2007-05-09 Thread Jim Jagielski


On May 9, 2007, at 8:55 AM, Roy T. Fielding wrote:


On May 9, 2007, at 5:32 AM, Jim Jagielski wrote:

On May 9, 2007, at 8:18 AM, Roy T. Fielding wrote:

On May 8, 2007, at 11:25 AM, [EMAIL PROTECTED] wrote:

+#define USE_ALTERNATE_IS_CONNECTED 1
+
+#if !defined(APR_MSG_PEEK)  defined(MSG_PEEK)
+#define APR_MSG_PEEK MSG_PEEK
+#endif
+
+#if USE_ALTERNATE_IS_CONNECTED  defined(APR_MSG_PEEK)


Huh?  Why are we polluting macro space with useless defines?



The USE_ALTERNATE_IS_CONNECTED is to allow that section
to be bypassed (although it should be protected
by a ifndef USE_ALTERNATE_IS_CONNECTED to allow
compile time changes I'm guessing).


Well, that would at least give it some reason to exist.  If we know
that new function works, then remove the defines and the old function.
If it only works when APR_MSG_PEEK is known by APR, then that is
the only #if needed (and we should not need to define our own).

If we don't know if it works, then -1 on the backport.



It's used in mod_jk (a variant, at least)... I've seen no
issues on my testing... I agree that making it conditional
isn't 100% correct, but it's how it's done in trunk
so far and the backport proposed the exact diffs.


The APR_MSG_PEEK
is so when APR is updated to reflect the
existence of APR_MSG_PEEK, we don't need to touch
this code. Finally, the older version assumed
that MSG_PEEK was defined and the compile would
barf if not; this avoid that.


Well, the code won't work anyway if APR doesn't know about MSG_PEEK.

+status = apr_socket_recvfrom(unused, socket, APR_MSG_PEEK,
+ buf[0], len);

presumably means something to APR, since otherwise we will lose data.



The previous version passed just MSG_PEEK, which worked, but
was cumbersome. Again, the idea is that apr_socket_recvfrom()
really should know about some basic recvfrom() flags, but
right now it doesn't; well, know about the same way
that apr_poll() knows about POLLIN/APR_POLLIN for example.

So right now, since apr_socket_recvfrom() does not, we
simply set APR_MSG_PEEK to MSG_PEEK and be done with
it. I'm fine with saying until apr_socket_recvfrom()
is updated to support MSG_PEEK we leave this out.
I'm even more fine in saying until then we leave this
in but don't make it the default (or use some configure
magic to determine the default). But it seemed
like a cool feature in trunk, and a good candidate
for backport







Re: ProxyPass globbing

2007-05-11 Thread Jim Jagielski


On May 11, 2007, at 5:23 PM, Mladen Turk wrote:


Jim Jagielski wrote:

   1. ProxyPass /foo/* balancer://bar
  should silently rewrite itself to
   ProxyPass /foo/ balancer://bar
  In other words, we already assume a prefix
  glob.  But should we? In other words,
  there is no difference between /foo/ and /foo/*.



If you are trying to mimic the mod_jk behavior


Actually, I'm not since it would break existing
ProxyPass usage...





This should be of course the balancer://bar/i/j/jim.gif
Once again, if you wish to mimic the JkMount.



Yes, that's my thoughts...


However I'm not sure how would ProxyPassReverse fit in there.

And of course once you introduce wild char maps there must
be some sort of exclusion rules.



ProxyPass already has that.



Re: ProxyPass globbing

2007-05-11 Thread Jim Jagielski


On May 11, 2007, at 5:39 PM, Nick Kew wrote:


On Fri, 11 May 2007 15:19:58 -0400
Jim Jagielski [EMAIL PROTECTED] wrote:


I've been looking at extending ProxyPass to
accept and use globbing patterns (basically,
to make it easier for those migrating from
mod_jk and JkMount to Apache 2.2), and it's
almost trivially easy, but there are some
gotchas:


Two half-thoughts:

Is there a strong reason to prefer globs over regexps?


Regex's are almost as trivially easy to add but

  1. slightly more complex structure
  2. minor bump to proxy_alias struct


A regexp doesn't have to be more complex than a glob,
but gives the user who wants it that bit more hack-fu,
and enables things people will want like
ProxyPass   \.(gif|jpe?g|png)$  http://backend/

Second, putting ProxyPass in a Directory context accomplishes
the same thing more simply by enabling LocationMatch on it.


Except, of course, that this does not work :)



Re: ProxyPass globbing

2007-05-11 Thread Jim Jagielski


On May 11, 2007, at 5:56 PM, Ruediger Pluem wrote:




On 05/11/2007 11:23 PM, Mladen Turk wrote:



And of course once you introduce wild char maps there must
be some sort of exclusion rules.

ProxyPass /*/foo/* balancer://bar
then for example by extending ProxyBlock
ProxyBlock /*/foo/*.gif balancer://bar
or by having an ! in front of path
ProxyPass !/*/foo/*.gif balancer://bar


Do we really need this?
As we know from Rich's lightning talk at the ApacheCon every directive
can be replaced by a rewrite rule :-).


Except that mod_rewrite is not balancer aware... so using
rewrite rules uses the default reverse proxy work,
which, I think, diminishes its usefullness.


Seriously, I wouldn't put too much effort in this. If we can get
some globbing easily and ease some of the migrations from mod_jk to
mod_proxy then this is cool. But IMHO if someone has more complex
stuff to solve he should use mod_rewrite. It seems to me like
the natural tool for this. Maybe we should remove something of the
'voodoo aura' of mod_rewrite.



Not only for mod_jk people but for anyone... Imagine
wanting to proxy all *.gif files to a proxy balancer;
You have a cluster of image servers. mod_rewrite
doesn't allow you to efficient use the balancer
and the normal Directory|Location|Files regex
containers don't work with ProxyPass... The existing
ProxyPass logic expects the URL space (either as
the 1st argument to ProxyPass or as obtained
from the Directory container) to be a simple URL prefix,
not any sort of glob/regex... This seems a major
disadvantage to me :)



Re: ProxyPass globbing

2007-05-12 Thread Jim Jagielski


On May 12, 2007, at 3:46 AM, Ruediger Pluem wrote:




Do we really need this?
As we know from Rich's lightning talk at the ApacheCon every  
directive

can be replaced by a rewrite rule :-).



Except that mod_rewrite is not balancer aware... so using
rewrite rules uses the default reverse proxy work,
which, I think, diminishes its usefullness.


Sorry, but this is not true. You can do

RewriteRule ^/somewhere(.*) balancer://mycluster/somewhereelse$1 [P]



You're right I misspoke regarding the lameness of
mod_rewrite :)  Since mod_rewrite just tucks a 'proxy:'
in front, mod_proxy does the right thing... My mistake.

Still, just because mod_rewrite allows it doesn't mean we
shouldn't allow ProxyPass to do what's right. ;)



Re: ProxyPass globbing

2007-05-12 Thread Jim Jagielski


On May 12, 2007, at 10:09 AM, Jim Jagielski wrote:



Still, just because mod_rewrite allows it doesn't mean we
shouldn't allow ProxyPass to do what's right. ;)



in any case, added to trunk... next step is to also
make the Directory container method work...


Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h

2007-05-13 Thread Jim Jagielski


On May 12, 2007, at 12:45 PM, Joshua Slive wrote:


On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote:
 Author: jim
 Date: Sat May 12 07:12:24 2007
 New Revision: 537429

 URL: http://svn.apache.org/viewvc?view=revrev=537429
 Log:
 Add regex pattern matching to ProxyPass, allowing,
 for example:

ProxyPass ~ \.gif balancer://imagecluster


On the configuration consistency side, the ~ thing is deprecated
everywhere and the standard way to do this is to have a ProxyPassMatch
directive (see RedirectMatch, DirectoryMatch, etc).



Yep. The ProxyPassMatch stuff is currently being worked
(basically, some function name changes ala add_proxy_regex)
but I was hoping to work the support for DirectoryMatch ..
into that patch as well before committing... but most likely
I'll just add in ProxyPassMatch first.



Re: ProxyPass globbing

2007-05-13 Thread Jim Jagielski


On May 12, 2007, at 11:19 AM, Ruediger Pluem wrote:




On 05/12/2007 04:15 PM, Jim Jagielski wrote:


On May 12, 2007, at 10:09 AM, Jim Jagielski wrote:



Still, just because mod_rewrite allows it doesn't mean we
shouldn't allow ProxyPass to do what's right. ;)



in any case, added to trunk... next step is to also
make the Directory container method work...


While we are at it: It would be useful if the backreferences from
the fake regex could be used on the real side.
But of course then we are very close to mod_rewrite :-).



Agreed on both... But then, wouldn't it require
that the simple case be made more complex. ie:

ProxyPass (/.*\.gif)$ balancer://foo$1

Instead of just:

ProxyPass \.gif$ balancer://foo

Otherwise the code would need to be a bit more complex to see
if the substitution worked and, if not, assume that
there was no requested substitution, if you follow me...
And that seemed controversial enough to me to want to
avoid it (for fear of the whole concept of adding
globbing/regex support to ProxyPass being vigorously
debated :) ). I think starting simple and then
expanding it is safer if you actually want an enhancement
to be folded in. Lessons learned from 11 years of
httpd development ;)


Re: ProxyPass globbing

2007-05-13 Thread Jim Jagielski


On May 13, 2007, at 1:01 AM, Paul Querna wrote:



Well... I think we should consider a more generic way to do this.

What I would like to see is something like

AddHandler gif proxy=balancer://bar

If mod_proxy knew about a handler syntax like this, you could do  
lots of

creative things, using SetHandler

DirectoryMatch /foo/bar*cats/
  Set proxy=balancer://bar
/DirectoryMatch

Which to me, seems like an easier thing to explain.  There is one  
way to

set handlers.. and thats all everything uses.

Thoughts?



I like it...


Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h

2007-05-13 Thread Jim Jagielski


On May 12, 2007, at 11:10 AM, Ruediger Pluem wrote:



Sorry for being picky here: One space too much.

...



Again I am picky here: Too many spaces.



No worries. Good catches.



Re: svn commit: r537429 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.c mod_proxy.h

2007-05-14 Thread Jim Jagielski


On May 13, 2007, at 3:07 PM, Ruediger Pluem wrote:




On 05/12/2007 05:10 PM, Ruediger Pluem wrote:


On 05/12/2007 04:12 PM, [EMAIL PROTECTED] wrote:


Author: jim
Date: Sat May 12 07:12:24 2007
New Revision: 537429

URL: http://svn.apache.org/viewvc?view=revrev=537429
Log:
Add regex pattern matching to ProxyPass, allowing,
for example:

  ProxyPass ~ \.gif balancer://imagecluster


URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/ 
mod_proxy.h?view=diffrev=537429r1=537428r2=537429
 
==

--- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat May 12  
07:12:24 2007

@@ -109,6 +109,7 @@
struct proxy_alias {
const char  *real;
const char  *fake;
+ap_regex_t  *regex;
};



Doesn't this require a minor bump?


What about the minor bump? Is it not needed because there is no  
typedef
for struct proxy_alias and thus struct proxy_alias is regarded as  
private?




Yep... at least I don't think we need one since it's not
a publicly used struct.



Re: ftp glob/limits?

2007-05-15 Thread Jim Jagielski

On May 14, 2007, at 4:18 PM, William A. Rowe, Jr. wrote:


What would folks think about changing

if (ap_strchr_c(arg, '*') != NULL) {
/* Prevent DOS attacks, only allow one segment to have a  
wildcard */
int found = 0;   /* The number of segments with a  
wildcard */


to permit multiple wildcards, but to restrict the number of matches
returned (configurable with a directive, of course)?

Over a small pattern space, uploads/*/* is often very useful.

What would be the sane default?  1,000 entries?



In my mind, that's the problem. If you allow multiple wildcards
then you shouldn't limit the returned entries, because how
does the client have any idea that you've done so...
In other words, how does it know that foo.java doesn't
exist because it really doesn't exist or rather it
would have been the 1001st entry :)


Re: ProxyTimeout does not work as documented

2007-05-21 Thread Jim Jagielski


On May 19, 2007, at 3:22 PM, Ruediger Pluem wrote:




On 05/19/2007 04:07 PM, Eric Covener wrote:

On 5/18/07, Ruediger Pluem [EMAIL PROTECTED] wrote:


Currently ProxyTimeout does not work as documented as the default
value is not
300 secs, but the Timeout setting of the server. The question to  
me is

now:
What should be fixed?

- Documentation (such that it matches the code)
- Code (such that it matches the documentation)



Acting like a connection timeout only for me proxying HTTP on  
2.2.4. I

think I've read about similiar befuddlements on assorted PRs.

It is raised a secondary issue here:
http://issues.apache.org/bugzilla/show_bug.cgi?id=11540


I know :-). This is the next issue I want to address once the issue  
above is solved.
In 2.2.x / trunk ProxyTimeout is ignored almost completely (it is  
only used for CONNECT).
Workers either use their own timeout set via the worker timeout  
parameter or
they use the server timeout as default, if no worker timeout is  
set. Although this (nearly)
works as documented I plan to change this to let the workers use  
the ProxyTimeout setting
as a default value in the case that they do not have their own  
timeout set via a parameter.
This sounds a lot more sane to me instead of using the server  
timeout here as a default value.




The logic should be:

   1. If a per-worker value is set, use that.
   2. If not, then if a ProxyTimeout value is set, use that.
   3. Otherwise, use Timeout

+1 on fixing that :)


Re: Any progress on PR41230 (HEAD issues on cached items)?

2007-05-21 Thread Jim Jagielski


On May 18, 2007, at 5:26 PM, Justin Erenkrantz wrote:


On 5/18/07, Ruediger Pluem [EMAIL PROTECTED] wrote:

 Well, because rv == !OK, wouldn't the CACHE_REMOVE_URL filter hit?
 That should do the dirty deed, no?  -- justin

No, as the CACHE_REMOVE_URL filter will only work if there is a
cache-handle or a cache-stale_handle. We have neither, as cache- 
stale_handle
is set to NULL in the case that the cached entity is *really*  
stale and we do

not create a new entity (and thus a cache-handle) in the HEAD case.


Well, let's not clear cache-stale_handle then.  How does the
following look?  -- justin



+1 !


Index: modules/cache/mod_cache.c
===
--- modules/cache/mod_cache.c   (revision 539607)
+++ modules/cache/mod_cache.c   (working copy)
@@ -477,8 +477,10 @@
reason = No Last-Modified, Etag, or Expires headers;
}
else if (r-header_only) {
-/* HEAD requests */
-reason = HTTP HEAD request;
+/* Forbid HEAD requests unless we have it cached already */
+if (!cache-stale_handle) {
+reason = HTTP HEAD request;
+}
}
else if (!conf-store_nostore 
 ap_cache_liststr(NULL, cc_out, no-store, NULL)) {
@@ -596,7 +598,12 @@
 * the headers).
 */

-/* Did we have a stale cache entry that really is stale? */
+/* Did we have a stale cache entry that really is stale?
+ *
+ * Note that for HEAD requests, we won't get the body, so for  
a stale

+ * HEAD request, we don't remove the entity - instead we let the
+ * CACHE_REMOVE_URL filter remove the stale item from the cache.
+ */
if (cache-stale_handle) {
if (r-status == HTTP_NOT_MODIFIED) {
/* Oh, hey.  It isn't that stale!  Yay! */
@@ -604,7 +611,7 @@
info = cache-handle-cache_obj-info;
rv = OK;
}
-else {
+else if (!r-header_only) {
/* Oh, well.  Toss it. */
cache-provider-remove_entity(cache-stale_handle);
/* Treat the request as if it wasn't conditional. */
@@ -612,8 +619,8 @@
}
}

-/* no cache handle, create a new entity */
-if (!cache-handle) {
+/* no cache handle, create a new entity only for non-HEAD  
requests */

+if (!cache-handle  !r-header_only) {
rv = cache_create_entity(r, size);
info = apr_pcalloc(r-pool, sizeof(cache_info));
/* We only set info-status upon the initial creation. */





Re: [Issue] External links @ the wiki, aka pagechange wars

2007-05-24 Thread Jim Jagielski


On May 24, 2007, at 8:50 AM, Colm MacCarthaigh wrote:


On Thu, May 24, 2007 at 08:05:30AM -0400, Joshua Slive wrote:

External links are encouraged where they add substantial value, but
you may not link to your own pages or otherwise seek private benefits
from external links.


I like the elegance of this rule, because if it's your page and you
words, well you can just add the content to the wiki anyway. But at  
the

same time it may invite even more awkward and inappropriate behaviour,
e.g. paying someone else to add the links on your behalf.

I think this problem is always going to fall into the We know abuse
when we see it category, it requires a vague kind of rule-making  
which

only humans can apply.

I'm in favour of banning these links in this instance, though not all
external links.



+1



Re: [vote] Piped loggers and APR_SHELLCMD_ENV

2007-05-24 Thread Jim Jagielski


On May 24, 2007, at 4:04 AM, Sander Temme wrote:



On May 23, 2007, at 4:39 PM, William A. Rowe, Jr. wrote:


 [ ] Revert to |foo to invoke foo, and
 add |$foo syntax to launch foo via sh


I like this one the best, since it consumes fewest resources in the  
default case.



 [ ] Retain |foo to invoke foo through sh, and
 add ||foo syntax to directly launch foo

These were the best solutions I could come up with, others are  
welcome.


However, the indirection through the shell is now the default case  
and has been for quite a while... I figure dropping it now might  
violate the principle of least astonishment.


I prefer the first one, but given the circumstances see myself  
tending towards the second alternative.




+1...



Re: [Fwd: Apache httpd vulenrabilities]

2007-05-30 Thread Jim Jagielski


On May 29, 2007, at 5:28 PM, William A. Rowe, Jr. wrote:



Essentially, PID tables need to move from the score to a local process
list only in the parent, and unshared.  That would solve the 80/20 of
this entire class of issues.



Yes... Of course, it doesn't even need to be that extensive.
If the parent process simply keeps in local storage a
list of PIDs and before it does anything to the child
process (send signal), it checks that the PID in the
scoreboard is also in its own list, and only
continues if it is This means that the scoreboard
stays as is and the parent process just needs a
small list of pid's added to it, plus some minor
logic.

The next coupla days I'll be mostly offline since my oldest
son Jon is graduating and so there's the graduation, and
planning, and party, etc... 


Re: httpd 1.3 / 2.0 / 2.2 tags this weekend?

2007-05-30 Thread Jim Jagielski


On May 30, 2007, at 1:56 AM, William A. Rowe, Jr. wrote:

I'd like to see new tarballs rolled soonish, given the single  
significant

bug that was disclosed earlier today.

Obviously most mass-vhosters are capable of compiling their own  
binary,
so providing the seperate-pid-table patch (whoever gets around to  
writing

one) resolves any immediate urgency.

But people get skittish when they see httpd anywhere near  
vulnerability,
so I'll roll apr 0.9/1.2 in 36 hours which means midday Sunday it's  
likely

to be released and ready to drop into 2.0 / 2.2.

1.3 could be rolled/released whenever it's been patched, but I'd  
personally
rather see *one* announcement, again, like we did about a year  
back, so we

don't have silly people scrambling to install 1.3 in place of 2.2 :)

I volunteer to roll 1.3 when it's ready, since Sander offered to  
roll 2.2

(and perhaps 2.0?)



Sounds good. I can likely take a look at adding
the parent has local pid table and verifies
scoreboard with it patch to 1.3 maybe over the
weekend (the 2.0 and 2.2 will likely follow
the same concept), unless someone beats me to it :)



Re: [Fwd: Apache httpd vulenrabilities]

2007-05-30 Thread Jim Jagielski


On May 30, 2007, at 2:57 PM, Ruediger Pluem wrote:




On 05/30/2007 08:10 PM, Jim Jagielski wrote:


On May 29, 2007, at 5:28 PM, William A. Rowe, Jr. wrote:



Essentially, PID tables need to move from the score to a local  
process
list only in the parent, and unshared.  That would solve the  
80/20 of

this entire class of issues.



Yes... Of course, it doesn't even need to be that extensive.
If the parent process simply keeps in local storage a
list of PIDs and before it does anything to the child
process (send signal), it checks that the PID in the
scoreboard is also in its own list, and only
continues if it is This means that the scoreboard
stays as is and the parent process just needs a
small list of pid's added to it, plus some minor
logic.


This is also my thought on this. Maybe the logic could be extended
somewhat so that the parent cross checks / sanity checks the number of
pids in its local storage and the number of active pids (a.k.a non  
empty

slots) in whatever state they are every time it decides that it needs
to start additional childs / kill childs. This should avoid / reduce
issues #1 / #4.



:) My thoughts exactly...

The only issue with pulling parent out of scoreboard is,
of course, the backwards compatibility with modules that
may be interested in it...


Re: httpd 1.3 / 2.0 / 2.2 tags this weekend?

2007-05-30 Thread Jim Jagielski


On May 30, 2007, at 2:41 PM, Sander Temme wrote:



On May 29, 2007, at 10:56 PM, William A. Rowe, Jr. wrote:

I volunteer to roll 1.3 when it's ready, since Sander offered to  
roll 2.2

(and perhaps 2.0?)


I'll be happy to RM both.



I'd like to, but my time will be sporadic enough the next
few days as to make it unwise to depend on me to
do this :)



Re: [Fwd: Apache httpd vulenrabilities]

2007-05-30 Thread Jim Jagielski
Ruediger Pluem wrote:
 
 
 
 On 05/30/2007 09:45 PM, Jim Jagielski wrote:
  
  On May 30, 2007, at 2:57 PM, Ruediger Pluem wrote:
  
 
 
  On 05/30/2007 08:10 PM, Jim Jagielski wrote:
 
 
  On May 29, 2007, at 5:28 PM, William A. Rowe, Jr. wrote:
 
 
  Essentially, PID tables need to move from the score to a local  process
  list only in the parent, and unshared.  That would solve the  80/20 of
  this entire class of issues.
 
 
  Yes... Of course, it doesn't even need to be that extensive.
  If the parent process simply keeps in local storage a
  list of PIDs and before it does anything to the child
  process (send signal), it checks that the PID in the
  scoreboard is also in its own list, and only
  continues if it is This means that the scoreboard
  stays as is and the parent process just needs a
  small list of pid's added to it, plus some minor
  logic.
 
 
  This is also my thought on this. Maybe the logic could be extended
  somewhat so that the parent cross checks / sanity checks the number of
  pids in its local storage and the number of active pids (a.k.a non 
  empty
  slots) in whatever state they are every time it decides that it needs
  to start additional childs / kill childs. This should avoid / reduce
  issues #1 / #4.
 
  
  :) My thoughts exactly...
  
  The only issue with pulling parent out of scoreboard is,
  of course, the backwards compatibility with modules that
  may be interested in it...
 
 Sorry for being confused now. I thought the idea was to have an additional
 local pid list in the parent for cross / sanity checking. The scoreboard
 remains as it is (including the pids). So what could modules possible miss
 after the patch?
 

Not sure where the confusion is... the idea is to keep the scoreboard
exactly as-is (as noted above, pulling out the parent parts (pid),
would be a major issue for backwards compatibility), and just add
pid-checking logic (and a local store of pids) in the parent process.
Thus, it's completely transparent and no changes to the scoreboard
or any entities that use it (except for the mentioned parent-side
checking, 'natch) :)

The only issue... refers to the problems if we try to restructure
the scoreboard instead, which is good for 2.4/3.0 but not for 2.2, 2.0
and 1.3... Any patches that tried to address the issue using that
method would be problematic. Hence my thoughts to just have local
storage for checking and keeping scoreboard as-is.
-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


Re: [Fwd: Apache httpd vulenrabilities]

2007-06-01 Thread Jim Jagielski

For 1.3, I'm looking at something like this...
Similar approach for 2.x...

Comments and feedback appreciated before I work on
porting to the 2.x trees:

Index: main/http_main.c
===
--- main/http_main.c(revision 543486)
+++ main/http_main.c(working copy)
@@ -354,9 +354,17 @@
char tpf_mutex_key[TPF_MUTEX_KEY_SIZE];
#endif /* TPF */
+/*
+ * Shared memory scoreboard
+ */
scoreboard *ap_scoreboard_image = NULL;
/*
+ * Parent process local storage of child pids
+ */
+static table *pid_table;
+
+/*
  * Pieces for managing the contents of the Server response header
  * field.
  */
@@ -372,6 +380,26 @@
API_VAR_EXPORT int ap_change_shmem_uid = 0;
/*
+ * Check the pid table to see if the actual pid exists
+ */
+static int in_pid_table(int pid) {
+char apid[64];
+const char *spid;
+snprintf(apid, sizeof(apid), %d, pid);
+spid = ap_table_get(pid_table, apid);
+if (spid  spid[0] == '1'  spid[1] == '\0')
+return 1;
+else
+return 0;
+}
+
+static void set_pid_table(int pid) {
+char apid[64];
+snprintf(apid, sizeof(apid), %d, pid);
+ap_table_set(pid_table, apid, 1);
+}
+
+/*
  * This routine is called when the pconf pool is vacuumed.  It  
resets the
  * server version string to a known value and [re]enables  
modifications

  * (which are disabled by configuration completion).
@@ -2787,6 +2815,11 @@
if (pid == my_pid || pid == 0)
continue;
+if (!in_pid_table(pid)) {
+ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR,  
server_conf,
+ Bad pid (%d) in scoreboard slot %d,  
pid, i);

+continue;
+}
waitret = waitpid(pid, status, WNOHANG);
if (waitret == pid || waitret == -1) {
ap_scoreboard_image-parent[i].pid = 0;
@@ -2887,13 +2920,21 @@
 for (n = 0; n  max_daemons_limit; ++n) {
 ap_sync_scoreboard_image();
-   if (ap_scoreboard_image-servers[n].status != SERVER_DEAD 
-   kill((pid = ap_scoreboard_image-parent[n].pid), 0) == -1) {
-   ap_update_child_status(n, SERVER_DEAD, NULL);
-   /* just mark it as having a successful exit status */
-   bzero((char *) status, sizeof(ap_wait_t));
-   return(pid);
-   }
+pid = ap_scoreboard_image-parent[n].pid;
+if (ap_scoreboard_image-servers[n].status != SERVER_DEAD) {
+if (in_pid_table(pid)) {
+if (kill(pid, 0) == -1) {
+ap_update_child_status(n, SERVER_DEAD, NULL);
+/* just mark it as having a successful exit  
status */

+bzero((char *) status, sizeof(ap_wait_t));
+return(pid);
+}
+}
+else {
+ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR,  
server_conf,
+Bad pid (%d) in scoreboard slot %d,  
pid, n);

+}
+}
 }
 return 0;
}
@@ -2916,15 +2957,21 @@
#define MAXWAITOBJ MAXIMUM_WAIT_OBJECTS
 HANDLE h[MAXWAITOBJ];
 int e[MAXWAITOBJ];
-int round, pi, hi, rv, err;
+int round, pi, hi, rv, err, pid;
 for (round = 0; round = (HARD_SERVER_LIMIT - 1) / MAXWAITOBJ +  
1; round++) {

hi = 0;
for (pi = round * MAXWAITOBJ;
 (pi  (round + 1) * MAXWAITOBJ)  (pi  HARD_SERVER_LIMIT);
 pi++) {
if (ap_scoreboard_image-servers[pi].status != SERVER_DEAD) {
-   e[hi] = pi;
-   h[hi++] = (HANDLE) ap_scoreboard_image-parent[pi].pid;
+e[hi] = pi;
+pid = ap_scoreboard_image-parent[pi].pid;
+if (in_pid_table(pid))
+h[hi++] = (HANDLE) pid;
+else {
+ap_log_error(APLOG_MARK, APLOG_NOERRNO| 
APLOG_ERR, server_conf,
+ Bad pid (%d) in scoreboard slot % 
d, pid, pi);

+}
}
}
@@ -4339,6 +4386,7 @@
 ap_server_pre_read_config  = ap_make_array(pcommands, 1, sizeof 
(char *));
 ap_server_post_read_config = ap_make_array(pcommands, 1, sizeof 
(char *));
 ap_server_config_defines   = ap_make_array(pcommands, 1, sizeof 
(char *));

+pid_table  = ap_make_table(pglobal, 100);
}
#ifndef MULTITHREAD
@@ -4987,6 +5035,7 @@
 ap_scoreboard_image-parent[slot].last_rtime = now;
#endif
 ap_scoreboard_image-parent[slot].pid = pid;
+set_pid_table(pid);
#ifdef SCOREBOARD_FILE
 lseek(scoreboard_fd, XtOffsetOf(scoreboard, parent[slot]), 0);
 force_write(scoreboard_fd, ap_scoreboard_image-parent[slot],
@@ -5049,6 +5098,7 @@
 int i;
 int to_kill;
 int idle_count;
+int pid;
 short_score *ss;
 time_t now = time(NULL);
 int free_length;
@@ -5113,8 +5163,15 @@
else if (ps-last_rtime + ss-timeout_len  now) {
   

Re: [Fwd: Apache httpd vulenrabilities]

2007-06-01 Thread Jim Jagielski


On Jun 1, 2007, at 10:19 AM, Colm MacCarthaigh wrote:


On Fri, Jun 01, 2007 at 10:05:26AM -0400, Jim Jagielski wrote:

-   if (ap_scoreboard_image-servers[n].status != SERVER_DEAD 
-   kill((pid = ap_scoreboard_image-parent[n].pid), 0) == -1) {
-   ap_update_child_status(n, SERVER_DEAD, NULL);
-   /* just mark it as having a successful exit status */
-   bzero((char *) status, sizeof(ap_wait_t));
-   return(pid);
-   }
+pid = ap_scoreboard_image-parent[n].pid;
+if (ap_scoreboard_image-servers[n].status != SERVER_DEAD) {
+if (in_pid_table(pid)) {
+if (kill(pid, 0) == -1) {
+ap_update_child_status(n, SERVER_DEAD, NULL);
+/* just mark it as having a successful exit
status */
+bzero((char *) status, sizeof(ap_wait_t));
+return(pid);
+}


Should we get rid of it from the table here? Can we get away without
removing stale pids in general? What if they are recycled by the OS
for something else?



No, that's a good point. We should likely remove the
pid from our table once the child goes away.



Re: [Fwd: Apache httpd vulenrabilities]

2007-06-01 Thread Jim Jagielski


On Jun 1, 2007, at 10:45 AM, Colm MacCarthaigh wrote:


On Fri, Jun 01, 2007 at 10:50:09AM -0400, Jim Jagielski wrote:

Should we get rid of it from the table here? Can we get away without
removing stale pids in general? What if they are recycled by the OS
for something else?



No, that's a good point. We should likely remove the
pid from our table once the child goes away.


I think we need to do it with an actual table unset call too, not just
set the entry to 0 or whatever, so that we don't exhaust our table.



Yes, agreed.

On that point, instead of initialising with ap_make_table(pglobal,  
100)

, it should probably use HARD_SERVER_LIMIT (if that's not in scope, it
may even justify making it in scope) instead of 100 too, to avoid
potential immediate exhaustion.

Nice simple fix though, using a simple table seems like a way better
approach than trying to replicate a paralell scoreboard.



I will likely just commit the updated patch, and we
can fine-tune via commits rather than having rounds
of patches posted :)



Re: [Fwd: Apache httpd vulenrabilities]

2007-06-01 Thread Jim Jagielski


On Jun 1, 2007, at 11:39 AM, Jim Jagielski wrote:



I will likely just commit the updated patch, and we
can fine-tune via commits rather than having rounds
of patches posted :)



I just started on the trunk patches, not sure when they
will be done... anyway, I was think that in addition to
the checks, it would also be useful if, instead of
just logging the issue, maybe the code should also
set the pid to 0 and maybe a different status (maybe
SERVER_UNKNOWN ?) Haven't thought this all the way
through yet.

As one would expect the 2.x patches are much larger,
since things aren't as centralized...



Re: [Fwd: Apache httpd vulenrabilities]

2007-06-01 Thread Jim Jagielski


On Jun 1, 2007, at 3:35 PM, Jim Jagielski wrote:



FWIW, I've created a branch of the work in progress, so
people can follow along and provide comments and patches :)

http://svn.apache.org/repos/asf/httpd/httpd/branches/httpd-pid- 
table




this is based off of trunk, so once we have this where we
want it, we'll backport to 2.2 and 2.0


Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c

2007-06-01 Thread Jim Jagielski
Ruediger Pluem wrote:
 
 For my understanding (and a bit of devils advocate here :-)): Why do we use a
 table here and not a fixed size array (HARD_SERVER_LIMIT) of ints (apr_array 
 of
 pid_t in the 2.x case). If we keep the pids at the same index as in the
 scoreboard the checks would be somewhat faster and simpler to do. Of course
 we waste more memory.
 

We can afford the time taken I think, to save space and to
be more efficient... I really dislike all that wasted space :)

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


Re: svn commit: r543667 - /httpd/httpd/branches/httpd-pid-table/server/mpm/mpmt_os2/mpmt_os2.c

2007-06-02 Thread Jim Jagielski


On Jun 2, 2007, at 3:57 AM, Ruediger Pluem wrote:




On 06/02/2007 01:44 AM, [EMAIL PROTECTED] wrote:

Author: jim
Date: Fri Jun  1 16:44:36 2007
New Revision: 543667

URL: http://svn.apache.org/viewvc?view=revrev=543667
Log:
Minor nit... be consistent and unset even now :)

Modified:
httpd/httpd/branches/httpd-pid-table/server/mpm/mpmt_os2/ 
mpmt_os2.c


Modified: httpd/httpd/branches/httpd-pid-table/server/mpm/mpmt_os2/ 
mpmt_os2.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/httpd-pid- 
table/server/mpm/mpmt_os2/mpmt_os2.c? 
view=diffrev=543667r1=543666r2=543667
= 
=
--- httpd/httpd/branches/httpd-pid-table/server/mpm/mpmt_os2/ 
mpmt_os2.c (original)
+++ httpd/httpd/branches/httpd-pid-table/server/mpm/mpmt_os2/ 
mpmt_os2.c Fri Jun  1 16:44:36 2007

@@ -337,6 +337,7 @@
 pid = ap_scoreboard_image-parent[n].pid;
 if (ap_in_pid_table(pid)) {
 kill(pid, is_graceful ? SIGHUP : SIGTERM);
+ap_unset_pid_table(pid);


Good catch. But is this also correct in the graceful / SIGHUP case?
Couldn't it happen that we want to sent a SIGTERM later?



Could be... It's been a LONG time since I looked at this
MPM :)



Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c

2007-06-04 Thread Jim Jagielski


On Jun 4, 2007, at 2:35 AM, David McCreedy wrote:


On 06/01/2007 05:42 PM, [EMAIL PROTECTED] wrote:
 Author: jim
 Date: Fri Jun  1 08:42:57 2007
 New Revision: 543511

 URL: http://svn.apache.org/viewvc?view=revrev=543511
 Log:
 Add in parent process PID table, to provide for
 a check against the pid values located in the
 scoreboard.

 Modified:
 httpd/httpd/branches/1.3.x/src/main/http_main.c


I tried out the code in apache-1.3_20070603161656.tar.gz on TPF  
because I

thought the pid_table stuff might affect the platform.


Hopefully this is enough information to recreate the issues.
If I left something out please let me know.



Thanks for the testing... I'm unable to recreate the problems
you're seeing, but at least I know what areas might be
causing them...

Thanks again!



Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c

2007-06-04 Thread Jim Jagielski


On Jun 4, 2007, at 2:35 AM, David McCreedy wrote:


On 06/01/2007 05:42 PM, [EMAIL PROTECTED] wrote:
 Author: jim
 Date: Fri Jun  1 08:42:57 2007
 New Revision: 543511

 URL: http://svn.apache.org/viewvc?view=revrev=543511
 Log:
 Add in parent process PID table, to provide for
 a check against the pid values located in the
 scoreboard.

 Modified:
 httpd/httpd/branches/1.3.x/src/main/http_main.c


I tried out the code in apache-1.3_20070603161656.tar.gz on TPF  
because I

thought the pid_table stuff might affect the platform.



I think I squashed those. Could you check out
trunk and try another test? Thanks!



Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c

2007-06-05 Thread Jim Jagielski


On Jun 4, 2007, at 10:29 PM, David McCreedy wrote:


June 04, 2007 5:51 PM David McCreedy wrote:

On 06/01/2007 05:42 PM, [EMAIL PROTECTED] wrote:

I think I squashed those. Could you check out
trunk and try another test? Thanks!


It fixes the Bad pid error but I'm not sure all is well...

On TPF we're not calling unset_pid_table on SIG_IDLE_KILLs.
I'll have to track down why.


I've figured out why some pids aren't being unset and I think it  
could affect other platforms besides TPF.
They're hitting the else part of the if (child_slot = 0)  
statement in http_main.c's standalone_main function.

I think the unset_pid_table call should be moved before this if.
If we're in this section of code, don't we want to remove the pid  
from the table regardless of whether the slot is found in the  
scoreboard?




Yes, in fact Rüdiger just committed a patch
that does that.



pid_table (Was: Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c)

2007-06-06 Thread Jim Jagielski

It looks the the 1.3 pid_table impl is pretty much on target.
I've been testing the trunk (2.3.x) version with no issues that
I've been able to see, but was wondering how many others
are testing...

In the meantime, should I create a 2.2 branch for the 2.2-version
of the pid_table code and backport the changes to that?
Unless I hear otherwise, I'll likely do that since the
backport from 2.2 to 2.0 shouldn't be that involved.


Re: [PATCH] 'clogging' input filters and the event MPM

2007-06-12 Thread Jim Jagielski

+1 (concept)

On Jun 10, 2007, at 9:13 PM, Paul Querna wrote:

Attached is a patch that should let people run mod_ssl under the  
Event MPM.


Previously, the event mpm would put a socket into its event thread to
wait for input, but due to issues with how mod_ssl might be buffering
data (or the entire request) in it, this would cause SSL'ized requests
to stall and fail with the event mpm.

The attach patch adds a new field, clogging_input_filters, to the
conn_rec. When this field is true, the event mpm will run a connection
just like the worker mpm is -- that is a single thread will run the
entire connection, including keepalives.

Thoughts on committing this to trunk?

Thanks,

-Paul
Index: server/mpm/experimental/event/event.c
===
--- server/mpm/experimental/event/event.c   (revision 545614)
+++ server/mpm/experimental/event/event.c   (working copy)
@@ -620,6 +620,16 @@
 pt = cs-pfd.client_data;
 }

+if (c-clogging_input_filters  !c-aborted) {
+/* Since we have an input filter which 'cloggs' the input  
stream,
+ * like mod_ssl, lets just do the normal read from input  
filters,

+ * like the Worker MPM does.
+ */
+ap_run_process_connection(c);
+ap_lingering_close(c);
+return 0;
+}
+
 read_request:
 if (cs-state == CONN_STATE_READ_REQUEST_LINE) {
 if (!c-aborted) {
Index: server/core.c
===
--- server/core.c   (revision 545614)
+++ server/core.c   (working copy)
@@ -3803,6 +3803,7 @@
 c-cs-c = c;
 c-cs-p = ptrans;
 c-cs-bucket_alloc = alloc;
+c-clogging_input_filters = 0;

 return c;
 }
Index: modules/http/http_core.c
===
--- modules/http/http_core.c(revision 545614)
+++ modules/http/http_core.c(working copy)
@@ -119,11 +119,17 @@
 return DEFAULT_HTTP_PORT;
 }

+static int ap_process_http_connection(conn_rec *c);
+
 static int ap_process_http_async_connection(conn_rec *c)
 {
 request_rec *r;
 conn_state_t *cs = c-cs;

+if (c-clogging_input_filters) {
+return ap_process_http_connection(c);
+}
+
 AP_DEBUG_ASSERT(cs-state == CONN_STATE_READ_REQUEST_LINE);

 while (cs-state == CONN_STATE_READ_REQUEST_LINE) {
Index: modules/ssl/ssl_engine_io.c
===
--- modules/ssl/ssl_engine_io.c (revision 545614)
+++ modules/ssl/ssl_engine_io.c (working copy)
@@ -1665,6 +1665,9 @@
 filter_ctx-pbioWrite   = BIO_new(bio_filter_out_method);
 filter_ctx-pbioWrite-ptr  = (void *)bio_filter_out_ctx_new 
(filter_ctx, c);


+/* We insert a clogging input filter. Let the core know. */
+c-clogging_input_filters = 1;
+
 ssl_io_input_add_filter(filter_ctx, c, ssl);

 SSL_set_bio(ssl, filter_ctx-pbioRead, filter_ctx-pbioWrite);
Index: include/httpd.h
===
--- include/httpd.h (revision 545614)
+++ include/httpd.h (working copy)
@@ -1081,6 +1081,11 @@
 int data_in_input_filters;
 /** Is there data pending in the output filters? */
 int data_in_output_filters;
+
+/** Are there any filters that clogg/buffer the input stream,  
breaking

+ *  the event mpm.
+ */
+int clogging_input_filters;
 };

 /**




Re: pid_table (Was: Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c)

2007-06-13 Thread Jim Jagielski


On Jun 6, 2007, at 9:13 AM, Jim Jagielski wrote:



In the meantime, should I create a 2.2 branch for the 2.2-version
of the pid_table code and backport the changes to that?
Unless I hear otherwise, I'll likely do that since the
backport from 2.2 to 2.0 shouldn't be that involved.



Done and done: passes tests.

   http://svn.apache.org/repos/asf/httpd/httpd/branches/httpd-2.2- 
pid-table


Next to come is 2.0, but, IMO, we should start folding these
in, ala 1.3


Re: pid_table (Was: Re: svn commit: r543511 - /httpd/httpd/branches/1.3.x/src/main/http_main.c)

2007-06-16 Thread Jim Jagielski

Status Update:

 The pid-table code is:
   o Applied to 1.3 branch
   o In httpd-2.0-pid-table branch (branches/2.0.x fork)
   o In httpd-2.2-pid-table branch (branches/2.2.x fork)
   o In httpd-pid-table branch (trunk fork)

Passes httpd-tests, as well as 'ab' with *very* small
MaxRequestsPerChild and Max/MinSpare* settings to
exercise the child fork/reap logic... so far, so good.
Proposal is to fold them into their respective branches
(or trunk) in anticipation of additional testing
and release. Comments?


Re: PID table changes (was Re: svn commit: r547987 - in /httpd/httpd/trunk)

2007-06-26 Thread Jim Jagielski


On Jun 21, 2007, at 1:18 PM, Colm MacCarthaigh wrote:


On Thu, Jun 21, 2007 at 05:51:34PM +0100, Joe Orton wrote:

On Sat, Jun 16, 2007 at 09:29:25PM -, Jim Jagielski wrote:
Secondly: I think this approach is unnecessarily complex.  I think  
it's

sufficient to simply check whether the target process is in the right
process group before sending a signal, i.e. getpgid(pid) == getpgrp 
().

This ensures that the parent will only kill things it created.


I actually thought avoiding this was a design goal, to prevent someone
from killing piped loggers and cgi processes ?



Yes, that's the case.



Re: PID table changes (was Re: svn commit: r547987 - in /httpd/httpd/trunk)

2007-06-26 Thread Jim Jagielski


On Jun 21, 2007, at 12:51 PM, Joe Orton wrote:



Firstly my sincere apologies to Jim for bringing this up after such
considerable work was put in already - I've had a busy month with a  
week

out for a holiday :(

Secondly: I think this approach is unnecessarily complex.  I think  
it's

sufficient to simply check whether the target process is in the right
process group before sending a signal, i.e. getpgid(pid) == getpgrp().
This ensures that the parent will only kill things it created.



If:

  1. The required getpgid/getpgrp functions are available
 on all current systems, and...
  2. it provides as much protection as the more...
 exacting...  check, then

I have no real push one way or another...


Re: PID table changes (was Re: svn commit: r547987 - in /httpd/httpd/trunk)

2007-06-26 Thread Jim Jagielski


On Jun 21, 2007, at 6:20 PM, William A. Rowe, Jr. wrote:


Joe Orton wrote:

On Thu, Jun 21, 2007 at 06:18:59PM +0100, Colm MacCarthaigh wrote:

On Thu, Jun 21, 2007 at 05:51:34PM +0100, Joe Orton wrote:

On Sat, Jun 16, 2007 at 09:29:25PM -, Jim Jagielski wrote:
Secondly: I think this approach is unnecessarily complex.  I  
think it's
sufficient to simply check whether the target process is in the  
right
process group before sending a signal, i.e. getpgid(pid) ==  
getpgrp().

This ensures that the parent will only kill things it created.
I actually thought avoiding this was a design goal, to prevent  
someone

from killing piped loggers and cgi processes ?


What's the security threat there?  Given that the attacker can  
arrange

for arbitrary execution of code in any unprivileged child, preventing
logging or CGI script execution is possible anyway.


Two different cases.  It will be trivial to kill the CGI scripts  
launched

from the process (not from cgid) for other children in, say, a worker
config.  The cgid and logging processes spawned by the parents aren't
vulnerable as such (and the logging processes are spawned with the  
httpd's

launching uid anyways, not nobody, IIRC.)

We only care about constraining the fallout of a malicious in process
script to that specific process, and the loggers, if we go beyond  
testing

the pid group, won't have that issue from the child process.

So I agree with testing the pid groups, I also believe it is  
worthwhile
to sanity test any critical data from the shared-scoreboard against  
the

parent processes' private reference table.



So what's the word... should we back out all the pid table stuff
(from both 1.3 and 2.x) and wait for Joe to provide his
pgrp changes (including any required configure magic to detect
function existance) or what?

It's kind of embarrassing that this is taking so long :)


Re: svn commit: r551171 - /httpd/httpd/branches/2.2.x/STATUS

2007-06-27 Thread Jim Jagielski


On Jun 27, 2007, at 11:08 AM, Nick Kew wrote:


On Wed, 27 Jun 2007 14:17:36 -
[EMAIL PROTECTED] wrote:


+* mod_proxy: Arrange the timeout handling.
+  Trunk version of patch:
+http://svn.apache.org/viewvc?view=revrevision=550514
+http://svn.apache.org/viewvc?view=revrevision=546128
+  +1: jfclere


Looks reasonable, but is there a reference to the problem it solves?


+
+* mod_proxy: Improve traces in ap_proxy_http_process_response()
+  to investigate PR37770.
+  Trunk version of patch:
+http://svn.apache.org/viewvc?view=revrev=549420
+  +1: jfclere


Hmmm.  This is designed to improve an error message?

+tmp_bb = apr_brigade_create(r-pool, r-connection- 
bucket_alloc);

+rv = ap_rgetline(tmp_s, n, len, r, fold, tmp_bb);
+apr_brigade_destroy(tmp_bb);

Isn't a whole new brigade an unnecessarily overhead (and
potentially large if the function gets used more in future)?
What problem does it solve?



Yeah... all this just so we can see the return val
of ap_rgetline()??



Re: svn commit: r551171 - /httpd/httpd/branches/2.2.x/STATUS

2007-06-27 Thread Jim Jagielski


On Jun 27, 2007, at 12:20 PM, Ruediger Pluem wrote:




On 06/27/2007 05:51 PM, Jim Jagielski wrote:


On Jun 27, 2007, at 11:08 AM, Nick Kew wrote:


On Wed, 27 Jun 2007 14:17:36 -
[EMAIL PROTECTED] wrote:


+* mod_proxy: Arrange the timeout handling.
+  Trunk version of patch:
+http://svn.apache.org/viewvc?view=revrevision=550514
+http://svn.apache.org/viewvc?view=revrevision=546128
+  +1: jfclere


Looks reasonable, but is there a reference to the problem it solves?


+
+* mod_proxy: Improve traces in  
ap_proxy_http_process_response()

+  to investigate PR37770.
+  Trunk version of patch:
+http://svn.apache.org/viewvc?view=revrev=549420
+  +1: jfclere


Hmmm.  This is designed to improve an error message?

+tmp_bb = apr_brigade_create(r-pool, r-connection- 
bucket_alloc);

+rv = ap_rgetline(tmp_s, n, len, r, fold, tmp_bb);
+apr_brigade_destroy(tmp_bb);

Isn't a whole new brigade an unnecessarily overhead (and
potentially large if the function gets used more in future)?
What problem does it solve?



Yeah... all this just so we can see the return val
of ap_rgetline()??


Yes, but have a look at ap_getline in protocol.c which was used  
before instead
of ap_proxygetline. It does exactly the same thing regarding the  
brigade.


I wasn't concerned about the brigade, but rather the extra
layer of complexity just so we see a return value...
Is it worth it?



Re: PID table changes (was Re: svn commit: r547987 - in /httpd/httpd/trunk)

2007-06-27 Thread Jim Jagielski


On Jun 27, 2007, at 12:40 PM, Joe Orton wrote:



Right: it adds overhead without benefit, and there is also a risk of
regressions.  e.g. in the trunk code it looks like children from
ap_register_extra_mpm_process() don't go in the pid table, so the
reclaim_one_pid() path to kill them won't work.



IIRC, these are already in the pid table at creation time.
ap_register_extra_mpm_process worries about existing
processes that are in the slot we want to use, but
since they are existing, their pid had already been
stored.


Re: [PATCH] pid safety checks for 2.2.x

2007-06-27 Thread Jim Jagielski


On Jun 27, 2007, at 3:38 PM, Ruediger Pluem wrote:

Hm. Wouldn't it make sense to log this in the case

waitret != APR_CHILD_DONE

as in the PID table patches?
This could give the admin a hint that something is rotten on his box.



+1 on the logging...

Looking forward to seeing the 1.3 patch...



Re: [PATCH] pid safety checks for 2.2.x

2007-06-27 Thread Jim Jagielski


On Jun 27, 2007, at 1:52 PM, Joe Orton wrote:


Here's the updated (and simpler) version of my patch which uses
apr_proc_wait() to determine whether a pid is a valid child.   
Simplifies

the MPM logic a bit since the pid != 0 check is moved into
ap_mpm_safe_kill().

Tested for both prefork and worker (on Linux) to fix the vulnerability
using mod_scribble:



I might be missing this (just did a quick scan) but
what about ap_reclaim_child_processes/reclaim_one_pid()?
Here we trust the pid in the scoreboard and
send signals.



Re: [PATCH] pid safety checks for 2.2.x

2007-06-28 Thread Jim Jagielski


On Jun 28, 2007, at 7:56 AM, Joe Orton wrote:



So, final comments on this?  If there's consensus that this is the
approach to take I'll revert the pidtable stuff out of trunk, commit
this there, and propose the backport.



Don't forget the 1.3 branch...



Re: [PATCH] pid safety checks for 2.2.x

2007-07-05 Thread Jim Jagielski


On Jul 4, 2007, at 12:52 PM, Joe Orton wrote:


On Thu, Jun 28, 2007 at 12:50:37PM -0400, Jim Jagielski wrote:

On Jun 28, 2007, at 7:56 AM, Joe Orton wrote:

So, final comments on this?  If there's consensus that this is the
approach to take I'll revert the pidtable stuff out of trunk, commit
this there, and propose the backport.



Don't forget the 1.3 branch...


I've been trying to get a patch together for 1.3.x but the portability
stuff keeps biting me - accurately detecting presence of getpgid is
harder with the 1.3 build system even on Linux (it's hidden without
_GNU_SOURCE defined, but helpers/TestCompile still detects it... etc).

So I'd say stick with the existing pid-table stuff for 1.3 - I  
tested it

with mod_scribble and it prevents the exploits tested there.



I agree... I also tried porting the pgid stuff back and it
was not as easy or straightforward as I would have hoped.
With 1.3, having a parent table is certainly more self-contained
than possible with 2.x and doesn't involve any portability
issues, afaikt.





Re: Async write completion for 2.2.x?

2007-07-06 Thread Jim Jagielski


On Jul 5, 2007, at 9:20 PM, Paul Querna wrote:


Jim Jagielski wrote:

Any interest in seeing if the Async write completion code in
trunk would be suitable for backporting to 2.2?


The biggest problem is that async write completion in trunk got  
tied up

in doing async reads, and some of those patches got reverted because
they broke too much stuff Brian Panee was the one spearheading  
this

in trunk, an I don't know where it was really left off.

TBH, I'm not sure the async write stuff even works perfectly in trunk,
so I am hesisant to backport it to 2.2, when I know the event MPM  
works

pretty well for its limmited use cases there (just KeepAlive).

My preference would be to get a workable solution for async reads and
write in turnk, and then look at backporting that as a whole. (or
releasing 2.4.x with it)



Well, that's the big reason I proposed this... I fear that
the async stuff will not be worked on/polished unless there
is some indication that it'll be in a released version
of Apache. My proposing a backport I'm hoping to generate
interest in that, so we can either *really* backport it
to 2.2 or encourage a pre-amsterdam 2.4 release.



Re: svn commit: r556931 - /httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c

2007-07-17 Thread Jim Jagielski


On Jul 17, 2007, at 10:31 AM, [EMAIL PROTECTED] wrote:
+if (*(workers-s-route)  strcmp(workers-s-route,  
route) == 0) {


Is that right? I'm guessing the 1st check was to make sure
that workers-s-route wasn't NULL (and therefore the strcmp
didn't dump), but instead you're checking that the 1st
character isn't '\0'... or was that the intent?



Re: svn commit: r556931 - /httpd/httpd/trunk/modules/proxy/mod_proxy_balancer.c

2007-07-17 Thread Jim Jagielski


On Jul 17, 2007, at 12:48 PM, jean-frederic clere wrote:


Jim Jagielski wrote:

On Jul 17, 2007, at 10:31 AM, [EMAIL PROTECTED] wrote:
+if (*(workers-s-route)  strcmp(workers-s- 
route, route) == 0) {

Is that right? I'm guessing the 1st check was to make sure
that workers-s-route wasn't NULL (and therefore the strcmp
didn't dump), but instead you're checking that the 1st
character isn't '\0'... or was that the intent?


It is checking for '\0' see modules/proxy/mod_proxy.h (typedef  
struct { ... } proxy_worker_stat.




Ahh... I had forgotten that route in proxy_worker_stat
was an char [] and not a *char



Re: 2.2.5?

2007-07-20 Thread Jim Jagielski


On Jul 19, 2007, at 10:49 AM, Sander Temme wrote:



On Jul 19, 2007, at 3:22 AM, Ruediger Pluem wrote:

Now that the security related patches have been backported to  
2.2.x is there

anything that prevents us from releasing 2.2.5?
Sander Temme volunteered to be the RM back in May. Is this still  
valid?


Absolutely.  I was going to propose a Tag  Roll later this week,  
but then all hell broke loose and I found myself on the road.


I can do a TR either this Friday (the 20th) or by the end of the  
weekend if that will get more people testing.  I'll probably need  
one or more folks on irc to walk me through the process as this is  
my first.


Can I have a hum on the timing?



I'm +1 on a TR soon; lots of good fixes improvements as well as
the security stuff. As noted on this and other lists, I'll be
offline (on vacation) the next week w/ very limited cell and
Net access (that's the way it is at some remote beaches)
otherwise I'd offer to RM if you couldn't. But the earliest
I could would be like the 30th...



Re: svn commit: r559837 - /httpd/httpd/trunk/modules/filters/mod_filter.c

2007-07-30 Thread Jim Jagielski


On Jul 26, 2007, at 3:46 PM, Ruediger Pluem wrote:



This is correct (because provider-match is a union and provider- 
match.string and
provider-match.regex are the same thing), but confusing. I would  
prefer

checking provider-match.regex instead.



Seems to me that avoiding unions altogether, if possible, is
a Good Thing.



Re: TR Procedure for 1.3?

2007-07-31 Thread Jim Jagielski

http://httpd.apache.org/dev/how-to-release.html is
kind of dated and yes is in need of an update, but
I've never bothered doing so (except for the last
1.3 release, I've been RM for 1.3 for the last several
years)

The svn copy location however is

   https://svn.apache.org/repos/asf/httpd/httpd/tags/1.3/APACHE_1_3_MM

On Jul 25, 2007, at 10:30 PM, Sander Temme wrote:


Folks,

Before I perform my first Tag  Roll, I'm trying to familiarize  
myself with the exact process.  Maybe I'm not looking in the right  
places, or is the documentation actually a bit thin on the nuts and  
bolts of the process?  Here's what I think should happen, gleaned  
from the various pages and scripts:


branches/1.3.x to tag version 1.3.MM:

1) Edit STATUS and src/include/httpd.h:

   In STATUS, change version number 1.3.MM line to say Tagged mm/ 
dd/


   In httpd,h, remove -dev from SERVER_BASEREVISION define

   Commit as revision rXX

2) svn copy -rXX https://svn.apache.org/repos/asf/httpd/httpd/ 
branches/1.3.x \

   https://svn.apache.org/repos/asf/httpd/httpd/tags/1.3.MM

   This will be committed as rYY (likely rXX + 1 but that  
is not certain)


3) Edit STATUS and src/include/httpd.h:

   In STATUS, add line 1.3.(MM + 1): In development

   In httpd.h, change SERVER_BASEREVISION define to say 1.3.(MM +  
1)-dev

   Also bump the APACHE_RELEASE define

   Commit

The previous I've inferred from the svn logs. Now I'm going by  
http://httpd.apache.org/dev/how-to-release.html which points to  
release.sh, but it looks like that only works for 2.x.  What of the  
below still applies?


4) Export the source:

   umask 022
   svn export http://svn.apache.org/repos/asf/httpd/httpd/tags/ 
1.3.MM \

   apache_1.3.MM

5) curl http://httpd.apache.org/docs/1.3/misc/FAQ.html \
  htdocs/manual/misc/FAQ.html

6) cp src/Configuration.tmpl src/Configuration

7) Remove various dev-only files:

   rm -f STATUS RULES.CVS src/INDENT htdocs/manual/misc./FAQ-*.html
   find . -name .cvsignore -exec rm {} \;
   find . -type d -name test -exec rm -Rf {} \;
   find . -type d -name .svn -exec rm -Rf {} \;

8) Expand the Server-Side-Include directives in the manual:

   cd htdocs/manual
   ./expand.pl

9) Roll the tarballs:

   tar -czf apache_1.3.MM.tar.gz apache_1.3.MM
   tar -cf apache_1.3.MM.tar apache_1.3.MM
   compress apache_1.3.MM.tar

10) Test the tarballs for untarrability

tar -tzf apache_1.3.MM.tar.gz

unzompress  apache_1.3.MM.tar.Z | tar -tf -

12) PGP sign the tarballs

gpg -sba apache_1.3.MM.tar.gz
gpg -sba apache_1.3.MM.tar.Z

13) Test the signatures

gpg --verify apache_1.3.MM.tar.gz.asc
gpg --verify apache_1.3.MM.tar.Z.asc

14) Pull out the CHANGES file for upload to the web

cp apache_1.3.MM/src/CHANGES ./CHANGES_1.3

15) Upload the tarballs to the website

scp apache_1.3.MM.tar.gz apache_1.3.MM.tar.Z \
apache_1.3.MM.tar.gz.asc apache_1.3.MM.tar.Z.asc  \
CHANGES_1.3 people.apache.org:
16) Move in place:

ssh people.apache.org
umask 002
mv apache_1.3.MM.tar.gz apache_1.3.MM.tar.Z \
apache_1.3.MM.tar.gz.asc apache_1.3.MM.tar.Z.asc  \
CHANGES_1.3 /www/httpd.apache.org/dev/dist

They should show up group-writable.  If not, you umask was off,  
do correct.
If the mv doesn't work, you're not in the right unix group.   
Have infra

correct.

17) Wait patiently for rsync, avoid bitching to infra at all costs.

18) Mail [EMAIL PROTECTED], [EMAIL PROTECTED] with a [VOTE] e-mail  
copied from an
earlier release effort lovingly archived on mail-archives.a.o/ 
mod_mbox.
NOTE it'd be highly desirable if all branches' tarballs were  
announced for

testing in one such e-mail

19) Sit back and watch the votes roll in

Comments?  Critique?  I'll be happy to update how-to-release.html  
accordingly.


S.

--
[EMAIL PROTECTED]  http://www.temme.net/sander/
PGP FP: 51B4 8727 466A 0BC3 69F4  B7B8 B2BE BC40 1529 24AF





1.3 bugs

2007-08-02 Thread Jim Jagielski

I went through and cleared out maybe 200 or so bugzilla bugs
for 1.3... Will start on the 2.x ones tomorrow and try to
clear out most of the crud there... We have some real old ones :)


Re: 1.3 bugs

2007-08-02 Thread Jim Jagielski
Nick Kew wrote:
 
 On Thu, 2 Aug 2007 16:30:25 -0400
 Jim Jagielski [EMAIL PROTECTED] wrote:
 
  I went through and cleared out maybe 200 or so bugzilla bugs
  for 1.3... Will start on the 2.x ones tomorrow and try to
  clear out most of the crud there... We have some real old ones :)
 
 Nice going!
 
 As for 2.x bugs, there are quite a few which are going to be
 harder to deal with.  Perhaps we want a new Archived status,
 for PRs which have merit but which aren't going to get 'fixed'.
 Particularly those with PatchAvailable.
 

Or maybe FutureFix ?

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


Re: 1.3 bugs

2007-08-02 Thread Jim Jagielski
It's easy to be brave when being heartless :)

Lots of WONTFIX :)

Tony Stevenson wrote:
 
 Impressive feat, takes a brave man to take on that many bugs!
 
 Jim Jagielski wrote:
  I went through and cleared out maybe 200 or so bugzilla bugs
  for 1.3... Will start on the 2.x ones tomorrow and try to
  clear out most of the crud there... We have some real old ones :)
 


-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
If you can dodge a wrench, you can dodge a ball.


PR 9727

2007-08-03 Thread Jim Jagielski

This PR (correctly) states that we aren't tagging double
quote as a tspecial/separator. Adding it in causes
no regressions, but I'm surprised that we haven't had more
issues about its absence, which makes me nervous about
changing it now...

Comments?


TR schedule

2007-08-03 Thread Jim Jagielski

Lets shoot for a TR of 1.3, 2.0 and 2.2 on Aug 10th... That
means a possible release on the 13th. That way, admins
aren't compelled to upgrade before/during the weekend (other-
wise, TR on the 8th and release on the 10th would make
sense)

I volunteer to RM 1.3 and even 2.2.

afaict, 1.3 and 2.0 are ready to go; we just have some
outstanding potentials still in line for 2.2


<    1   2   3   4   5   6   7   8   9   10   >