Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add socket and SSL/TLS context options to connectors #52

Merged
merged 2 commits into from
Mar 8, 2016

Conversation

clue
Copy link
Contributor

@clue clue commented Nov 20, 2015

This is an alternative approach to #17 and #45 in order to achieve a better separation of concerns and to leave the current API unchanged. See also the discussion in #4 for some background.

This PR builds on top of #46, so the diff also includes its changes. Look here for changes only related to this PR alone. (no longer applies after rebasing)

Fixes #4
Supersedes/closes #45
Supersedes/closes #17

@clue
Copy link
Contributor Author

clue commented Nov 21, 2015

I've just rebased this on the current master now that #46 is in.

Ready for review :)

@clue clue added this to the v0.5 milestone Nov 21, 2015
@WyriHaximus
Copy link
Contributor

LGTM :shipit:

@clue
Copy link
Contributor Author

clue commented Feb 23, 2016

I've just rebased this now that #54 is in and requires full HHVM support.

@@ -73,4 +74,53 @@ public function gettingEncryptedStuffFromGoogleShouldWork()
$this->assertTrue($connected);
$this->assertRegExp('#^HTTP/1\.0#', $response);
}

/** @test */
public function testSelfSignedRejectsIfVerificationIsEnabled()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test is failing for me on OS X 10.11 with PHP 5.5.30

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is strange indeed…

Can you try running the following code to verify this is in line with what PHP's stream handlers do?

file_get_contents('https://self-signed.badssl.com/', false, stream_context_create(array('ssl'=>array('verify_peer'=>false))));
// all okay

file_get_contents('https://self-signed.badssl.com/', false, stream_context_create(array('ssl'=>array('verify_peer'=>true))));
// PHP warning:  file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
// error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed on line 1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup. Those worked as you expected.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you give some error output for the failing test?

Unfortunately I do not have a Mac to test against, so how else could I assist you tracking this down?

As an alternative, how about skipping this test on Mac for now (similar to how we skip certain tests for HHVM)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather not just skip because it's failing. HHVM is skipped because the future is not supported in the language.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After talking to @cboden, we agree that this is probably a bug in certain (older) versions of PHP, which we have yet to triage further.

This test DOES work correctly on ALL PHP versions tested via Travis.

This test does NOT work on PHP 5.5.30 on Mac, but DOES work with PHP 7.? on Mac.

Note that this test failure is not related to this library at all, we're currently looking into providing a test script which highlights this issue in the underlying SSL stream wrapper.

Let's keep track of this in #59 instead and get this PR in :shipit:

@Nek-
Copy link

Nek- commented Mar 2, 2016

Hey guys,

This should be merge in 0.4.x ASAP as there is no bc break... And it's a crutial missing feature since PHP 5.6.

@clue
Copy link
Contributor Author

clue commented Mar 2, 2016

merge in 0.4.x ASAP as there is no bc break

This PR builds on top of #46 which does in fact contain a BC break, as such, this will likely land in v0.5.0 soon.

See the above remark, other than that I consider this ready to merge :shipit:

@clue
Copy link
Contributor Author

clue commented Mar 4, 2016

merge in 0.4.x ASAP as there is no bc break

This PR builds on top of #46 which does in fact contain a BC break, as such, this will likely land in v0.5.0 soon.

I think it might make sense to backport some of these fixes to a v0.4.x release, see #60 for more details.

Either way, I now consider this ready to merge :shipit:

@cboden cboden merged commit e3d41bc into reactphp-legacy:master Mar 8, 2016
@clue clue deleted the context branch August 1, 2016 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow context options when creating a socket
4 participants