bumped Symfony version to 2.1.9-DEV
fixed CHANGELOG
updated CHANGELOG for 2.2.0-RC3
updated VERSION for 2.2.0-RC3
bumped Symfony version to 2.2.0-RC4-DEV
added a DebuClassLoader::findFile() method to make the wrapping less invasive
Fixes AppCache + ESI + Stopwatch problem
merged branch jfsimon/issue-6227 (PR #7180)

This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes #7180).

Commits
-------

6a33bc2 [HttpKernel] Fixes AppCache + ESI + Stopwatch problem

Discussion
----------

[HttpKernel] Fixes AppCache + ESI + Stopwatch problem

There is a very special case when using builtin AppCache class as kernel wrapper, in the case of an ESI request leading to a `stale` response [B]  inside a `fresh` cached response [A]. In this case, `$token` contains the [B] debug token, but the  open `stopwatch` section ID is equal to the [A] debug token. Trying to reopen section with the [B] token throws an exception which must be caught.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| Bug mask?     | no, does @vicb agree?
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6227, #6230

I tried to find a better solution than just wrapping thrown exceptions with `try/catch`, but IMHO the #6230 solution from @lsmith77 was in fine the best one. I just added some comments in the code to avoid the WTF reactions while reading it.

---------------------------------------------------------------------------

by vicb at 2013-02-25T16:51:51Z

@vicb never agrees :)

I don't have time to check this deeply now but I would like to see a UT.

Could your use case be expressed as "on nested terminate events" ?

---------------------------------------------------------------------------

by jfsimon at 2013-02-25T16:58:49Z

@vicb If I had an idea on how to write a conclusive test for that, I swear, it would be provided in this PR.
[HttpFoundation] Fixed messed up headers
merged branch SamsonIT/fixedMessedUpHeaders (PR #7189)

This PR was squashed before being merged into the 2.2 branch (closes #7189).

Commits
-------

850bd5a [HttpFoundation] Fixed messed up headers

Discussion
----------

[HttpFoundation] Fixed messed up headers

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

I ran into this when somewhere in our code the Response object was cast into a string. After that, when send()'ing the Response, the headers would be all mixed up. This is because the __toString in HeaderBag ksorts the headers, while the __toString in ResponseHeaderBag doesn't ksort the corresponding headerNames. This patch ksorts that one as well.

allPreserveCase() is new to 2.2, so this bug doesn't seem to affect earlier versions.

To be exact, this is where it got introduced: https://github.com/symfony/symfony/commit/63a228c45613bb

---------------------------------------------------------------------------

by Burgov at 2013-02-26T09:27:20Z

B.t.w. another option was to ksort a copy of the headers array in the ResponseBag and leaving the actual thing as-is. Not sure which one would be the best option?
[Finder] Adds expandable globs support to shell adapters
merged branch jfsimon/issue-6586 (PR #7190)

This PR was squashed before being merged into the master branch (closes #7190).

Commits
-------

6e0d93e [Finder] Adds expandable globs support to shell adapters

Discussion
----------

[Finder] Adds expandable globs support to shell adapters

As expandable globs, i mean glob following `*.{a,b}` syntax.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6586
Adds expandable globs support to shell adapters
merged branch jfsimon/issue-6586 (PR #7190)

This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes #7190).

Commits
-------

b2e9bdb [Finder] Adds expandable globs support to shell adapters

Discussion
----------

[Finder] Adds expandable globs support to shell adapters

As expandable globs, i mean glob following `*.{a,b}` syntax.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6586
fix issue 4911
fixed paths/notPaths regex for shell adapters
merged branch jfsimon/issue-4911 (PR #7188)

This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes #7188).

Commits
-------

3b2cb79 [Finder] fixed paths/notPaths regex for shell adapters
45b84c5 [Finder] fix issue 4911

Discussion
----------

[Finder] Fixes paths/notPaths issue with shell adapters

This PR is built upon #5128 from @gajdaw.
It fixes wrong handling of regex in `paths` and `notPaths` criteria by shell adapters.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #4911, #5128
Routing issue with installation in a sub-directory
ref: https://github.com/symfony/symfony/issues/7129
Fixed handling absent href attribute in base tag

The HTML5 spec states that the href attribute is optional for the
base tag. Fixed the DomCrawler::addHtmlContent() method to support this

See here and here:
http://www.w3.org/TR/html-markup/base.html#base.attrs.href
http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-base-element
merged branch matthijsvandenbos/matthijsvandenbos/basetag-href-fix (PR #7178)

This PR was submitted for the master branch but it was merged into the 2.1 branch instead (closes #7178).

Commits
-------

c41f640 [DomCrawler] Fixed handling absent href attribute in base tag

Discussion
----------

[DomCrawler] Fixed handling absent href attribute in base tag

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

# Description
The HTML5 spec states that the href attribute is optional for the
base tag. The current code causes an exception on conforming HTML.
Fixed the DomCrawler::addHtmlContent() method to support this.
Added Unit Test to check for this situation.

# Explanantion
Currently, if the base tag doesn't have an href attribute, the uri for the DomCrawler gets set to an empty string. This is incorrect behaviour, especially because it breaks DomCrawler::links(). The Symfony\Component\DomCrawler\Link objects it creates, expect a non-empty string in their constructor arguments and throw an InvalidArgumentException.

# References
http://www.w3.org/TR/html-markup/base.html#base.attrs.href
http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-base-element