diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
index 18962fff05a4c4c1f873ac6dfd25f12eb16d2f98..1932aebb1230dc76476fc4d928666473d0de7ef2 100644
--- a/src/websockets/qwebsocket_p.cpp
+++ b/src/websockets/qwebsocket_p.cpp
@@ -1227,7 +1227,7 @@ QNetworkProxy QWebSocketPrivate::proxy() const
  */
 void QWebSocketPrivate::setProxy(const QNetworkProxy &networkProxy)
 {
-    if (networkProxy != networkProxy)
+    if (m_configuration.m_proxy != networkProxy)
         m_configuration.m_proxy = networkProxy;
 }
 #endif  //QT_NO_NETWORKPROXY
diff --git a/tests/auto/qwebsocket/tst_qwebsocket.cpp b/tests/auto/qwebsocket/tst_qwebsocket.cpp
index 9e5997e1178f3bba54e76ae111ba4d40ba9aa29b..529efa3946d1e2f47cfb8e0786e8fb660a8845d8 100644
--- a/tests/auto/qwebsocket/tst_qwebsocket.cpp
+++ b/tests/auto/qwebsocket/tst_qwebsocket.cpp
@@ -147,6 +147,7 @@ private Q_SLOTS:
     void tst_sendTextMessage();
     void tst_sendBinaryMessage();
     void tst_errorString();
+    void tst_setProxy();
 };
 
 tst_QWebSocket::tst_QWebSocket()
@@ -575,6 +576,23 @@ void tst_QWebSocket::tst_errorString()
     QCOMPARE(socket.errorString(), QStringLiteral("Host not found"));
 }
 
+void tst_QWebSocket::tst_setProxy()
+{
+    // check if property assignment works as expected.
+    QWebSocket socket;
+    QCOMPARE(socket.proxy(), QNetworkProxy(QNetworkProxy::DefaultProxy));
+
+    QNetworkProxy proxy;
+    proxy.setPort(123);
+    socket.setProxy(proxy);
+    QCOMPARE(socket.proxy(), proxy);
+
+    proxy.setPort(321);
+    QCOMPARE(socket.proxy().port(), quint16(123));
+    socket.setProxy(proxy);
+    QCOMPARE(socket.proxy(), proxy);
+}
+
 QTEST_MAIN(tst_QWebSocket)
 
 #include "tst_qwebsocket.moc"