<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
    #email-body { min-width: 30em !important; }
    #email-page { padding: 8px !important; }
    #email-banner { padding: 8px 8px 0 8px !important; }
    #email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
    #email-fields { padding: 0 8px 8px 8px !important; }
    #email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
    <tr valign="top">
        <td id="email-page" style="padding:16px !important;">
            <table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
                <tr valign="top">
                    <td bgcolor="#ffffff" style="background-color:#ffffff;color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="https://shibboleth.net/images/shib_240x83.png" alt="" style="vertical-align:top;" /></td>
                </tr><tr valign="top">
    <td id="email-banner" style="padding:32px 32px 0 32px;">

                
        
        
            <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
    <tr valign="top">
        <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
                                        <img id="email-avatar" src="https://issues.shibboleth.net/jira/secure/useravatar?avatarId=10202" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
                        <div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
                                    <a class="user-hover" rel="putmanb@shibboleth.net" id="email_putmanb@shibboleth.net" href="https://issues.shibboleth.net/jira/secure/ViewProfile.jspa?name=putmanb%40shibboleth.net" style="color:#326ca6;">Brent Putman</a>
     commented on <img src="https://issues.shibboleth.net/jira/images/icons/bug.gif" height="16" width="16" border="0" align="absmiddle" alt="Bug"> <a style='color:#326ca6;text-decoration:none;' href='https://issues.shibboleth.net/jira/browse/JOWS-38'>JOWS-38</a>
            </div>
                        <div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
                <a style='color:#326ca6;text-decoration:none;' href='https://issues.shibboleth.net/jira/browse/JOWS-38'><strong>HttpClientBuilder is setting a global Protocol and socket factory for &#39;https&#39; scheme</strong></a>
            </div>
                    </td>
    </tr>
</table>
    </td>
</tr>
<tr valign="top">
    <td id="email-fields" style="padding:0 32px 32px 32px;">
        <table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
            <tr valign="top">
                <td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
                <td>
                    <table border="0" cellpadding="0" cellspacing="0" width="100%">
                        <tr valign="top">
    <td colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
        <div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;"><p>The HttpClient 3.x API really isn't designed to allow general use of custom socket factories per HttpClient instance in a general way.  The model seems to be you tie a non-global custom Protocol (containing the factory) to a specific host+port (see their HostConfiguration class).</p>

<p>From what I can tell (in the absence of any real documentation that I can find on this), the 2 ways the client API is designed to be used is:</p>

<p>1) You use absolute URI's (with scheme+hostname, optionally port) in the HttpMethod's.  In this case it uses the globally registered Protocol/SocketFactory for the scheme.</p>

<p>2) You use non-absolute URI's in the HttpMethods (no scheme/hostname). You wire in or otherwise supply (see below) a given HttpClient instance with a HostConfiguration, consisting of the triple of (host, port, Protocol). </p>

<p>There is an overloaded HttpClient method:</p>

<p>public int executeMethod(final HostConfiguration hostConfiguration, final HttpMethod method)</p>

<p>which I was hoping would allow use of custom socket factories on a per-call basis.  It works, but only if the HttpMethod is relative, not absolute (per #2 above).  Because of some stuff they do in the HttpMethod constructors, it winds up configuring an internal HostConfiguration on the method when the URI used to construct is absolute, and this mucks up the use of the HostConfiguration that you pass in on the method call.</p>

<p>So...using some very sketchy code for a custom subclass of HttpClient, you can get something to work, which allows per-client custom socket factories that aren't tied to a specific host+port. It has to temporarily mutate the HttpMethod (to have relative URI and null HostConfiguration) before it executes it, and then reset it before returning.  It isn't pretty.  It's actually really nasty.  I'll attach it here, but I really don't like it.  It might be doing horrible things to the internals of the call, it's hard to know.</p>

<p>The only other option I can see is to just use the API the way it was intended, and use HttpClient instances which are not general (i.e. for any host+port), but bound to specific host+port, and then the calling code uses relative URI's rather than absolute.  This might actually work OK for the HTTP metadata providers and HttpResource, since they only work with a single URL given at construction time.  But we'd have to jump through hoops to make the current behavior stay the same for methods that expose the underlying URL and similar things.</p>

<p>Based on deprecated methods on HTTPMetdataProvider, it looks like perhaps we once did something like this.  I'm not sure why it changed.  So that worries me.  But it probably can't be worse than that the client builder is doing today...</p></div>
        <div style="color:#505050;padding:4px 0 0 0;">                </div>
    </td>
</tr>
                    </table>
                </td>
            </tr>
        </table>
    </td>
</tr>













            </table>
        </td><!-- End #email-page -->
    </tr>
    <tr valign="top">
        <td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
            This message is automatically generated by JIRA.<br />
            If you think it was sent incorrectly, please contact your JIRA administrators<br />
            For more information on JIRA, see: <a style='color:#326ca6;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
        </td>
    </tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->