Skip to content
This repository was archived by the owner on Feb 12, 2024. It is now read-only.

Commit 6693663

Browse files
committed
fix: make port transferables unique
1 parent 75dd865 commit 6693663

File tree

4 files changed

+8
-5
lines changed

4 files changed

+8
-5
lines changed

packages/ipfs-message-port-client/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ values instead of copying.
102102

103103
> **Note:** Transferring data will empty it on the sender side which can lead to
104104
> errors if that data is used again later. To avoid these errors transfer option
105-
> was added so user can explicitily give up reference when it is safe to do so.
105+
> was added so user can explicitly give up reference when it is safe to do so.
106106
107107
```js
108108
/**
@@ -115,7 +115,7 @@ const example = async (data) => {
115115
}
116116
```
117117

118-
It is however recommended to prefer web native [Blob][] / [File][] intances as
118+
It is however recommended to prefer web native [Blob][] / [File][] instances as
119119
most web APIs provide them as option & can be send across without copying
120120
underlying memory.
121121

packages/ipfs-message-port-client/src/client/transport.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ module.exports = class MessageTransport {
178178
input: query.toJSON()
179179
},
180180
// @ts-ignore - TS seems to want second arg to postMessage to not be undefined
181-
query.transfer()
181+
[...new Set(query.transfer() || [])]
182182
)
183183
}
184184

packages/ipfs-message-port-protocol/src/core.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ const decodeCallback = ({ port }) => {
197197
* @returns {void}
198198
*/
199199
const callback = (args, transfer = []) => {
200-
port.postMessage(args, transfer)
200+
port.postMessage(args, [...new Set(transfer)])
201201
}
202202

203203
return callback

packages/ipfs-message-port-server/src/server.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,12 @@ exports.Server = class Server {
212212
if (!query.signal.aborted) {
213213
try {
214214
const value = await query.result
215+
const transfer = [...new Set(value.transfer || [])]
216+
delete value.transfer
217+
215218
port.postMessage(
216219
{ type: 'result', id, result: { ok: true, value } },
217-
value.transfer || []
220+
transfer
218221
)
219222
} catch (error) {
220223
port.postMessage({

0 commit comments

Comments
 (0)