Closed Bug 1463509 Opened 2 years ago Closed 2 years ago

Alternative Services Support for SOCKS connections

Categories

(Core :: Networking: HTTP, enhancement, P3)

50 Branch
enhancement

Tracking

()

RESOLVED FIXED
mozilla62
Tracking Status
firefox62 --- fixed

People

(Reporter: mcmanus, Assigned: mcmanus)

Details

(Whiteboard: [necko-triaged])

Attachments

(1 file)

Alternate Services is not implemented when behind a proxy. For the general http:// case its not possible, as the proxy is given just the origin name and an Alt-Service needs both a 'route' and an origin.

however, SOCKS and HTTPS connect are actually routes. And these proxies are not aware of http semantics inside the TLS, so they don't need the origin.

This patch adds SOCKS support. SOCKS and Alt-Svc support is particularly interesting for the tor protocol as a way to route to tor protocol .onion native (non-exit) services without changing origins/bookmarks/links.
Comment on attachment 8979675 [details]
Bug 1463509 - SOCKS support for Alternative Services

https://reviewboard.mozilla.org/r/245818/#review251972

::: netwerk/base/nsSocketTransport2.cpp:1164
(Diff revision 1)
>          int32_t     port       = (int32_t) mOriginPort;
>          nsCOMPtr<nsIProxyInfo> proxyInfo = mProxyInfo;
>          uint32_t    controlFlags = 0;
>  
>          uint32_t i;
> -        for (i=0; i<mTypeCount; ++i) {
> +        for (i=0; i < mTypeCount; ++i) {

nit: let's space out i=0 since we're here.

::: netwerk/protocol/http/AlternateServices.h:68
(Diff revision 1)
>    static void ProcessHeader(const nsCString &buf, const nsCString &originScheme,
>                              const nsCString &originHost, int32_t originPort,
>                              const nsACString &username, bool privateBrowsing,
>                              nsIInterfaceRequestor *callbacks, nsProxyInfo *proxyInfo,
>                              uint32_t caps, const OriginAttributes &originAttributes);
> +  static bool AcceptableProxy(nsProxyInfo *pi);

Let's add a comment regarding what `acceptable` means in this context, and what we use it for.
Also mention that it returns true when passed a null pointer.
Attachment #8979675 - Flags: review?(valentin.gosu) → review+
Assignee: nobody → mcmanus
Priority: -- → P3
Whiteboard: [necko-triaged]
Pushed by mcmanus@ducksong.com:
https://hg.mozilla.org/integration/autoland/rev/c2270d35829d
SOCKS support for Alternative Services r=valentin
https://hg.mozilla.org/mozilla-central/rev/c2270d35829d
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla62
You need to log in before you can comment on or make changes to this bug.