[Libreoffice-commits] online.git: Branch 'libreoffice-6-4' - 6 commits - loleaflet/css loleaflet/src net/Socket.hpp net/SslSocket.hpp net/WebSocketHandler.hpp wsd/LOOLWSD.hpp
Michael Meeks (via logerrit)
logerrit at kemper.freedesktop.org
Tue Dec 10 14:45:02 UTC 2019
loleaflet/css/toolbar.css | 5 +---
loleaflet/src/layer/tile/CalcTileLayer.js | 5 ----
loleaflet/src/layer/tile/GridLayer.js | 29 +++++++++++++++------------
loleaflet/src/layer/tile/ImpressTileLayer.js | 5 ----
loleaflet/src/layer/tile/WriterTileLayer.js | 1
net/Socket.hpp | 3 +-
net/SslSocket.hpp | 21 ++++++++++++++-----
net/WebSocketHandler.hpp | 2 -
wsd/LOOLWSD.hpp | 2 -
9 files changed, 39 insertions(+), 34 deletions(-)
New commits:
commit 3d330d653f3b8f9795e32313ee27fc1af105320d
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Tue Dec 10 11:11:20 2019 +0000
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:07:49 2019 +0000
tdf#129306 SslSocket: handle EAGAIN properly.
Change-Id: I9fb3323b8d071fdc50399a67eb6b0aaeed9342b0
diff --git a/net/Socket.hpp b/net/Socket.hpp
index 730f7194b..98479841b 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -831,7 +831,8 @@ public:
~StreamSocket()
{
- LOG_DBG("StreamSocket dtor #" << getFD());
+ LOG_DBG("StreamSocket dtor #" << getFD() << " with pending "
+ "write: " << _outBuffer.size() << ", read: " << _inBuffer.size());
if (!_closed)
{
diff --git a/net/SslSocket.hpp b/net/SslSocket.hpp
index de16fdf1d..ba9954f56 100644
--- a/net/SslSocket.hpp
+++ b/net/SslSocket.hpp
@@ -22,28 +22,30 @@ public:
SslStreamSocket(const int fd, bool isClient,
std::shared_ptr<SocketHandlerInterface> responseClient) :
StreamSocket(fd, isClient, std::move(responseClient)),
+ _bio(nullptr),
_ssl(nullptr),
_sslWantsTo(SslWantsTo::Neither),
_doHandshake(true)
{
LOG_DBG("SslStreamSocket ctor #" << fd);
- BIO* bio = BIO_new(BIO_s_socket());
- if (bio == nullptr)
+ _bio = BIO_new(BIO_s_socket());
+ if (_bio == nullptr)
{
throw std::runtime_error("Failed to create SSL BIO.");
}
- BIO_set_fd(bio, fd, BIO_NOCLOSE);
+ BIO_set_fd(_bio, fd, BIO_NOCLOSE);
_ssl = SslContext::newSsl();
if (!_ssl)
{
- BIO_free(bio);
+ BIO_free(_bio);
+ _bio = nullptr;
throw std::runtime_error("Failed to create SSL.");
}
- SSL_set_bio(_ssl, bio, bio);
+ SSL_set_bio(_ssl, _bio, _bio);
if (isClient)
{
@@ -240,6 +242,14 @@ private:
// Fallthrough...
default:
{
+ // Effectively an EAGAIN error at the BIO layer
+ if (BIO_should_retry(_bio))
+ {
+ LOG_TRC("Socket #" << getFD() << " BIO asks for retry - underlying EAGAIN? " <<
+ SSL_get_error(_ssl, rc));
+ return -1; // poll is used to detect real errors.
+ }
+
if (sslError == SSL_ERROR_SSL)
LOG_TRC("Socket #" << getFD() << " SSL error: SSL (" << sslError << ").");
else if (sslError == SSL_ERROR_SYSCALL)
@@ -289,6 +299,7 @@ private:
}
private:
+ BIO* _bio;
SSL* _ssl;
/// During handshake SSL might want to read
/// on write, or write on read.
commit 4937af15f811182291f1e75e21bbf21a6a06b326
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Dec 9 16:37:23 2019 +0000
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:07:40 2019 +0000
prefetch: disable interval timer when we've pre-fetched everything.
Change-Id: I9d3b3819b3d9a960aa31f729686315e9e5d6d8e1
diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index d9ff748a3..4db50a473 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -1278,6 +1278,9 @@ L.GridLayer = L.Layer.extend({
var fragment = document.createDocumentFragment();
this._addTiles(finalQueue, fragment);
this._level.el.appendChild(fragment);
+ } else {
+ clearInterval(this._tilesPreFetcher);
+ this._tilesPreFetcher = undefined;
}
},
@@ -1285,8 +1288,10 @@ L.GridLayer = L.Layer.extend({
if (!this._map) {
return;
}
- clearInterval(this._tilesPreFetcher);
- clearTimeout(this._preFetchIdle);
+ if (this._tilesPreFetcher)
+ clearInterval(this._tilesPreFetcher);
+ if (this._preFetchIdle)
+ clearTimeout(this._preFetchIdle);
if (resetBorder) {
this._preFetchBorder = null;
}
@@ -1295,6 +1300,7 @@ L.GridLayer = L.Layer.extend({
this._preFetchPart = this._selectedPart;
this._preFetchIdle = setTimeout(L.bind(function () {
this._tilesPreFetcher = setInterval(L.bind(this._preFetchTiles, this), interval);
+ this._prefetchIdle = undefined;
}, this), idleTime);
}
});
commit 9c18156416cb4aff208714054018c748750bb153
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Dec 9 16:14:26 2019 +0000
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:07:37 2019 +0000
prefetch: cleanup, and avoid constant growth of pre-loading area.
We were inadvertently mutating and growing our copy of the bounds
to fetch here, causing a chunk of un-necessary rendering load,
particularly for spreadsheets.
Change-Id: Ia01565c043d1cb0172cabbec16d941dd8b66dd05
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index 37c6f9b0a..8bd816214 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -547,7 +547,6 @@ L.CalcTileLayer = L.TileLayer.extend({
}
else {
// tile outside of the visible area, just remove it
- this._preFetchBorder = null;
this._removeTile(key);
}
}
@@ -665,10 +664,6 @@ L.CalcTileLayer = L.TileLayer.extend({
});
this._resetPreFetching(true);
this._update();
- if (this._preFetchPart !== this._selectedPart) {
- this._preFetchPart = this._selectedPart;
- this._preFetchBorder = null;
- }
}
},
diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index 7623f7cd8..d9ff748a3 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -1185,6 +1185,7 @@ L.GridLayer = L.Layer.extend({
var zoom = this._map.getZoom();
var tilesToFetch = 10;
var maxBorderWidth = 5;
+ var tileBorderSrc;
if (this._map._permission === 'edit') {
tilesToFetch = 5;
@@ -1192,19 +1193,17 @@ L.GridLayer = L.Layer.extend({
}
if (!this._preFetchBorder) {
- if (this._selectedPart !== this._preFetchPart) {
- // all tiles from the new part have to be pre-fetched
- var tileBorder = this._preFetchBorder = new L.Bounds(new L.Point(0, 0), new L.Point(0, 0));
- }
- else {
- var pixelBounds = this._map.getPixelBounds(center, zoom);
- tileBorder = this._pxBoundsToTileRange(pixelBounds);
- this._preFetchBorder = tileBorder;
- }
+ var pixelBounds = this._map.getPixelBounds(center, zoom);
+ tileBorderSrc = this._pxBoundsToTileRange(pixelBounds);
+ this._preFetchBorder = tileBorderSrc;
}
else {
- tileBorder = this._preFetchBorder;
+ tileBorderSrc = this._preFetchBorder;
}
+
+ // We mutate this - so need a temporary copy
+ var tileBorder = new L.Bounds(tileBorderSrc.min, tileBorderSrc.max);
+
var queue = [],
finalQueue = [],
visitedTiles = {},
diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js b/loleaflet/src/layer/tile/ImpressTileLayer.js
index d35df5aaa..97a1f7bba 100644
--- a/loleaflet/src/layer/tile/ImpressTileLayer.js
+++ b/loleaflet/src/layer/tile/ImpressTileLayer.js
@@ -654,7 +654,6 @@ L.ImpressTileLayer = L.TileLayer.extend({
}
else {
// tile outside of the visible area, just remove it
- this._preFetchBorder = null;
this._removeTile(key);
}
}
@@ -729,10 +728,6 @@ L.ImpressTileLayer = L.TileLayer.extend({
this._selectedParts = command.selectedParts || [command.selectedPart];
this._resetPreFetching(true);
this._update();
- if (this._preFetchPart !== this._selectedPart) {
- this._preFetchPart = this._selectedPart;
- this._preFetchBorder = null;
- }
var partMatch = textMsg.match(/[^\r\n]+/g);
// only get the last matches
this._partHashes = partMatch.slice(partMatch.length - this._parts);
diff --git a/loleaflet/src/layer/tile/WriterTileLayer.js b/loleaflet/src/layer/tile/WriterTileLayer.js
index 5fd7643e6..b922dead6 100644
--- a/loleaflet/src/layer/tile/WriterTileLayer.js
+++ b/loleaflet/src/layer/tile/WriterTileLayer.js
@@ -318,7 +318,6 @@ L.WriterTileLayer = L.TileLayer.extend({
}
else {
// tile outside of the visible area, just remove it
- this._preFetchBorder = null;
this._removeTile(key);
}
}
commit 3a79dcff85ce12d84225811b2e341da57ade67fa
Author: mert <mert.tumer at collabora.com>
AuthorDate: Tue Nov 26 20:17:49 2019 +0300
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:06:17 2019 +0000
fix Insert shape dropdown is too narrow on desktop
Change-Id: Id128cd455e3efb34498511434a38c03efa93c602
Reviewed-on: https://gerrit.libreoffice.org/83814
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/loleaflet/css/toolbar.css b/loleaflet/css/toolbar.css
index 9dbcf29c7..1fd1e4b79 100644
--- a/loleaflet/css/toolbar.css
+++ b/loleaflet/css/toolbar.css
@@ -744,9 +744,8 @@ button.leaflet-control-search-next
background: rgba(255, 255, 255, 0.5);
position: relative;
padding: 2px;
- display: block;
- overflow: auto; /* child margins otherwise don't expand *this* element (parent) */
- width: 100%;
+ display: inline-block;
+ width: 350px;
height: 100%;
}
commit 06a45b328872d5892d7cbf0d33da3d0d11bfca80
Author: Corentin Noël <corentin.noel at collabora.com>
AuthorDate: Fri Nov 22 16:50:49 2019 +0100
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:05:31 2019 +0000
Allow ConfigValueGetter to be used with uint64 on 32 bits systems
Change-Id: I5d19c97c6900cea6476e85afd4cfe9885f6c8fa0
Reviewed-on: https://gerrit.libreoffice.org/83513
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp
index 333a6afc1..6e35bd796 100644
--- a/wsd/LOOLWSD.hpp
+++ b/wsd/LOOLWSD.hpp
@@ -234,7 +234,7 @@ private:
void operator()(int& value) { value = _config.getInt(_name); }
void operator()(unsigned int& value) { value = _config.getUInt(_name); }
- void operator()(unsigned long& value) { value = _config.getUInt64(_name); }
+ void operator()(uint64_t& value) { value = _config.getUInt64(_name); }
void operator()(bool& value) { value = _config.getBool(_name); }
void operator()(std::string& value) { value = _config.getString(_name); }
void operator()(double& value) { value = _config.getDouble(_name); }
commit ae832d310e6a825dc4435abba252ce0a1a1e5404
Author: Corentin Noël <corentin.noel at collabora.com>
AuthorDate: Fri Nov 22 15:09:16 2019 +0100
Commit: Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Dec 10 14:05:25 2019 +0000
WebSocketHandler: allow to build on 32bits systems
Change-Id: Id51df359d9c985e72e9186433ce5dcf98e4199a4
Reviewed-on: https://gerrit.libreoffice.org/83492
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp
index f37d459a2..1d24fa26a 100644
--- a/net/WebSocketHandler.hpp
+++ b/net/WebSocketHandler.hpp
@@ -524,7 +524,7 @@ private:
/// Returns the number of bytes written (including frame overhead) on success,
/// 0 for closed/invalid socket, and -1 for other errors.
int sendFrame(const std::shared_ptr<StreamSocket>& socket,
- const char* data, const size_t len,
+ const char* data, const uint64_t len,
unsigned char flags, const bool flush = true) const
{
if (!socket || data == nullptr || len == 0)
More information about the Libreoffice-commits
mailing list