Skip to content

Commit 1e4ac24

Browse files
pgorszkowski-igaliamagomez
authored andcommitted
[Network] Add TCPKeepAlive option
TCPKeepAlive is implemented only for libsoup 3.x
1 parent 22f6086 commit 1e4ac24

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@ void NetworkDataTaskSoup::createRequest(ResourceRequest&& request, WasBlockingCo
223223
g_signal_connect(m_soupMessage.get(), "wrote-body-data", G_CALLBACK(wroteBodyDataCallback), this);
224224
#if USE(SOUP2)
225225
g_signal_connect(static_cast<NetworkSessionSoup&>(*m_session).soupSession(), "authenticate", G_CALLBACK(authenticateCallback), this);
226-
g_signal_connect(m_soupMessage.get(), "network-event", G_CALLBACK(networkEventCallback), this);
227226
#else
228227
g_signal_connect(m_soupMessage.get(), "authenticate", G_CALLBACK(authenticateCallback), this);
229228
g_signal_connect(m_soupMessage.get(), "accept-certificate", G_CALLBACK(acceptCertificateCallback), this);
@@ -235,6 +234,7 @@ void NetworkDataTaskSoup::createRequest(ResourceRequest&& request, WasBlockingCo
235234
g_signal_connect(m_soupMessage.get(), "request-certificate", G_CALLBACK(requestCertificateCallback), this);
236235
g_signal_connect(m_soupMessage.get(), "request-certificate-password", G_CALLBACK(requestCertificatePasswordCallback), this);
237236
#endif
237+
g_signal_connect(m_soupMessage.get(), "network-event", G_CALLBACK(networkEventCallback), this);
238238
g_signal_connect(m_soupMessage.get(), "restarted", G_CALLBACK(restartedCallback), this);
239239
g_signal_connect(m_soupMessage.get(), "starting", G_CALLBACK(startingCallback), this);
240240
if (m_shouldContentSniff == ContentSniffingPolicy::SniffContent)
@@ -1502,7 +1502,6 @@ void NetworkDataTaskSoup::didFail(const ResourceError& error)
15021502
dispatchDidCompleteWithError(error);
15031503
}
15041504

1505-
#if USE(SOUP2)
15061505
void NetworkDataTaskSoup::networkEventCallback(SoupMessage* soupMessage, GSocketClientEvent event, GIOStream* stream, NetworkDataTaskSoup* task)
15071506
{
15081507
if (task->state() == State::Canceling || task->state() == State::Completed || !task->m_client)
@@ -1514,6 +1513,16 @@ void NetworkDataTaskSoup::networkEventCallback(SoupMessage* soupMessage, GSocket
15141513

15151514
void NetworkDataTaskSoup::networkEvent(GSocketClientEvent event, GIOStream* stream)
15161515
{
1516+
#if !USE(SOUP2)
1517+
if (event == G_SOCKET_CLIENT_CONNECTED) {
1518+
const char* enableTCPkeepalive = getenv("WEBKIT_TCP_KEEPALIVE");
1519+
if (enableTCPkeepalive && enableTCPkeepalive[0] != '0') {
1520+
RELEASE_ASSERT(G_IS_SOCKET_CONNECTION(stream));
1521+
if (GSocket* socket = g_socket_connection_get_socket(G_SOCKET_CONNECTION(stream)))
1522+
g_socket_set_keepalive(socket, TRUE);
1523+
}
1524+
}
1525+
#else
15171526
auto time = MonotonicTime::now();
15181527
switch (event) {
15191528
case G_SOCKET_CLIENT_RESOLVING:
@@ -1555,8 +1564,8 @@ void NetworkDataTaskSoup::networkEvent(GSocketClientEvent event, GIOStream* stre
15551564
ASSERT_NOT_REACHED();
15561565
break;
15571566
}
1558-
}
15591567
#endif
1568+
}
15601569

15611570
void NetworkDataTaskSoup::startingCallback(SoupMessage* soupMessage, NetworkDataTaskSoup* task)
15621571
{

Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,8 @@ class NetworkDataTaskSoup final : public NetworkDataTask {
149149

150150
void didFail(const WebCore::ResourceError&);
151151

152-
#if USE(SOUP2)
153152
static void networkEventCallback(SoupMessage*, GSocketClientEvent, GIOStream*, NetworkDataTaskSoup*);
154153
void networkEvent(GSocketClientEvent, GIOStream*);
155-
#endif
156154

157155
#if SOUP_CHECK_VERSION(2, 49, 91)
158156
static void startingCallback(SoupMessage*, NetworkDataTaskSoup*);

0 commit comments

Comments
 (0)