Re: [pgAdmin4][runtime][patch]: RM#2398 - Proxy not bypassed for embedded server in runtime on Windows

From: Neel Patel <neel(dot)patel(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>, dp(dot)maxime(at)gmail(dot)com
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [pgAdmin4][runtime][patch]: RM#2398 - Proxy not bypassed for embedded server in runtime on Windows
Date: 2017-05-24 08:22:07
Message-ID: CACCA4P1Q89NBadubBXmLYvBNDo3yRJH9JgDGa7omY=GscsOQbg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

After debugging the issue in windows, we came to know that "random port"
generation logic in runtime is getting failed if we configured proxy server
in windows.

Below are the code where we are finding random free port and use with our
URL "localhost:<port>". Below code return "0" as port value so application
is not able to start and it hangs on splash screen. Here, if we configured
proxy server in windows then "bind" method always return false and gives
message "Operation not permitted" but when we disable proxy server then
below code gives valid random port number.

QTcpSocket socket;
socket.bind(0, QTcpSocket::ShareAddress);
port = socket.localPort();

Same happens with Linux OS - when user defined "http_proxy" environment
variable and run pgAdmin4 application then above code fails and gives "0"
as random port number and application hangs on splash screen.

From the below Qt 5.8 released link, we came to know that "random port"
generation work well after setting application level proxy.
http://blog.qt.io/blog/2017/01/23/qt-5-8-released/

QNetworkProxy::setApplicationProxy(QNetworkProxy());

After setting above, "bind" method return true and gives correct port
number and application starts working. We are also setting
"setUseSystemConfiguration=true" after setting application level proxy
which will override the setting and use platform specific system proxy
configuration.

From the below link, it looks like fixed in Qt 5.9.
https://bugreports.qt.io/browse/QTBUG-58374
https://codereview.qt-project.org/#/c/186124/

I have tested with Qt 5.8 Web Engine and webkit in windows. Do review it
and let me know for comments.

Thanks,
Neel Patel

On Fri, May 19, 2017 at 4:37 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:

> On Thu, May 18, 2017 at 3:42 PM, Neel Patel <neel(dot)patel(at)enterprisedb(dot)com>
> wrote:
> > Hi Dave,
> >
> > Please find attached patch for the fix of RM#2398 - "Proxy not bypassed
> for
> > embedded server in runtime on Windows".
> >
> > Observation:-
> > We have observed this issue only with Qt WebEngine. We have not observed
> > this issue with Webkit ( Tested with Qt 5.3 ).
> >
> > Issue:-
> > If user set option "Bypass proxy server for local addresses" then
> WebEngine
> > doesn't bypass the request for local addresses even if that option is
> set.
> >
> > Solution:-
> > Now if user set option "Bypass proxy server for local addresses" then Web
> > Engine bypass the request for localhost and if user unset then request
> will
> > not be bypassed.
> >
> > Please find attached fix for this issue. Do review and test it and let me
> > know for any issue.
>
> Noted on the ticket:
>
> ====
> Right, but as Maxim has noted, the proxy code is there to allow users
> to browse to online docs, so it can't just be disabled.
>
> This likely worked in 1.3 as that used QtWebEngine (which had a bunch
> of other issues). We need to fix it for QtWebKit, so that it honors
> the bypass proxy for local addresses option.
> ====
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

Attachment Content-Type Size
RM_2398.patch application/octet-stream 1.9 KB

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dave Page 2017-05-24 12:18:41 Re: [pgAdmin4][PATCH] Improvements to Query Results Grid User Experience
Previous Message Akshay Joshi 2017-05-24 07:35:59 Re: Declarative partitioning in pgAdmin4