Граф коммитов

24 Коммитов

Автор SHA1 Сообщение Дата
Andrea Marchesini be2551ab2c Bug 1523702 - Max IPC message size for InputStream serialization, r=smaug
The total size of an IPC inputStream message must be less than 1mb. When we
compose the message for the multiplex stream, each sub stream collaborates with
its own size, deciding if it's better to be a pipe stream (IPCRemoteStream) or
a full serialized one.

Differential Revision: https://phabricator.services.mozilla.com/D18543

--HG--
extra : moz-landing-system : lando
2019-02-04 22:50:51 +00:00
Andrea Marchesini 0499bad916 Bug 1520150 - Single InputStreams can serialize themselves as IPCRemoteStreams (pipe) - part 1 - Passing IPC managers around, r=smaug
Before this set of patches, the decision of exposing the stream as a pipe was
centralized in IPCStreamUtils, based on the total expectation size of the IPC
message. This triggers issues when multiplex inputStreams contain something
that cannot be sent as a pipe (IPCBlobInputStream, for instance), or something
that it's better to do not set as a pipe (nsFileInputStream), together with
memory streams (nsStringInputStream), which could make the IPC message greater
then what accepted (1mb).

These patches move the "pipe vs non-pipe" choice into the single inputStream
implementation.
2019-01-28 10:48:35 +01:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Andrea Marchesini 4ebf5b4364 Bug 1496581 - Split nsISeekableStream in 2 classes: nsISeekableStream and nsITellableStream, f=mayhemer, r=froydnj
In the current code there are 3 main issues:

1. nsFileStream is not really thread-safe. There is nothing to protect the
internal members and we see crashes.

2. nsPipeInputStream doesn't implement ::Seek() method and that caused issues
in devtools when a nsHttpChannel sends POST data using a pipe. In order to fix
this, bug 1494176 added a check in nsHttpChannel: if the stream doesn't
implement ::Seek(), let's clone it. This was an hack around nsPipeInputStream,
and it's bad.

3. When nsHttpChannel sends POST data using a file stream, nsFileStream does
I/O on main-thread because of the issue 2. Plus, ::Seek() is called on the
main-thread causing issue 1.

Note that nsPipeInputStream implements only ::Tell(), of the nsISeekableStream
methods. It doesn't implement ::Seek() and it doesn't implement ::SetEOF().

With this patch I want to fix point 2 and point 3 (and consequentially issue 1
- but we need a separate fix for it - follow up). The patch does:

1. it splits nsISeekableStream in 2 interfaces: nsITellableStream and
nsISeekableStream.
2. nsPipeInputStream implements only nsITellableStream.  Doing this, we don't
need the ::Seek() check for point 2 in nsHttpChannel: a simple QI check is
enough.
3. Because we don't call ::Seek() in nsHttpChannel, nsFileStream doesn't do I/O
on the main-thread, and we don't crash doing so.
2018-10-18 13:35:35 +02:00
Andrea Marchesini cb2d1c2cfe Bug 1434553 - Implement nsIInputStreamLength and nsIAsyncInputStreamLength - part 4 - SlicedInputStream exposes nsIInputStreamLength, r=froydnj 2018-05-23 07:12:35 +02:00
Andrea Marchesini 2bbc9938e9 Bug 1453955 - Synchronize access to various stream classes' async wait callback reference - SlicedInputStream, r=mayhemer 2018-04-13 16:40:20 +02:00
Andrea Marchesini ff755dfc70 Bug 1451731 - Synchronize access to various stream classes' async wait callback reference - part 3 - SlicedInputStream, r=mayhemer 2018-04-10 17:33:08 +02:00
Andrea Marchesini a4d8f81bac Bug 1414767 - Moving SlicedInputStream under mozilla namespace, r=froydnj 2017-11-07 01:04:06 +01:00
Sebastian Hengst e50208ab81 Backed out changeset 66d49b9e8217 (bug 1414767) for build bustage on OS X: CoreServices.framework/Frameworks/AE.framework/Headers/AERegistry.h:693: reference to 'TextRange' is ambiguous. r=backout on a CLOSED TREE 2017-11-06 17:51:56 +01:00
Andrea Marchesini 096614f974 Bug 1414767 - Moving SlicedInputStream under mozilla namespace, r=froydnj 2017-11-06 16:21:01 +01:00
Andrew McCreight 989d6728ca Bug 1412119 - Re-fix mode lines in xpcom. r=erahm 2017-10-26 14:39:00 -04:00
Andrea Marchesini cccac16f60 Bug 1403771 - SlicedInputStream takes ownership of the underlying stream and it propagates the Close() call, r=smaug 2017-10-05 07:38:48 +02:00
Sebastian Hengst d4232ad6f1 Backed out changeset c68498143c13 (bug 1403771) for bustage at dom/file/StreamBlobImpl.cpp:108: 'GetInternalStream' was not declared in this scope. r=backout on a CLOSED TREE 2017-10-04 19:11:13 +02:00
Andrea Marchesini 96a79ce7c9 Bug 1403771 - SlicedInputStream takes ownership of the underlying stream and it propagates the Close() call, r=smaug 2017-10-04 18:51:10 +02:00
Andrea Marchesini 8b8935bd3b Bug 1355369 - SlicedInputStream must implement AsyncWait correctly, r=smaug 2017-04-12 13:49:08 +02:00
Andrea Marchesini 0cd2885406 Bug 1355369 - SlicedInputStream should expose nsIAsyncInputStream interface only when needed, r=smaug 2017-04-12 13:49:08 +02:00
Andrea Marchesini 930614ab07 Bug 1339710 - SlicedInputStream should be nsISeekableStream, r=smaug 2017-02-22 09:41:59 +01:00
Andrea Marchesini 0500e8f2e7 Bug 1339710 - SlicedInputStream should be an nsIIPCSerializableInputStream, r=smaug 2017-02-22 09:41:05 +01:00
Andrea Marchesini 5dfc951f15 Bug 1339710 - SlicedInputStream should not be nsICloneableInputStream if the source stream is not, r=smaug 2017-02-22 09:40:46 +01:00
Iris Hsiao f9bdfe10bb Backed out 5 changesets (bug 1339710) for GTest failures in TestSlicedInputStream.StartBiggerThan
Backed out changeset 7c0ec55b44dc (bug 1339710)
Backed out changeset cbb4e1c2aada (bug 1339710)
Backed out changeset c685dca493f5 (bug 1339710)
Backed out changeset 4761a15d45fd (bug 1339710)
Backed out changeset 7561692c1bc7 (bug 1339710)
2017-02-22 16:19:50 +08:00
Andrea Marchesini 76b13c0185 Bug 1339710 - SlicedInputStream should be nsISeekableStream, r=smaug 2017-02-22 07:57:14 +01:00
Andrea Marchesini a75afeb38f Bug 1339710 - SlicedInputStream should be an nsIIPCSerializableInputStream, r=smaug 2017-02-22 07:55:50 +01:00
Andrea Marchesini f981e3155b Bug 1339710 - SlicedInputStream should not be nsICloneableInputStream if the source stream is not, r=smaug 2017-02-22 07:54:46 +01:00
Andrea Marchesini d62e084ce0 Bug 1288997 - memory blob should not be shared across processes - part 2 - SlicedInputStream, r=froydnj 2016-07-25 22:41:02 +02:00