automerge / hypermerge

Build p2p collaborative applications without any server infrastructure in Node.js
MIT License
1.28k stars 66 forks source link

Fix socket hang-up #47

Closed jeffpeterson closed 4 years ago

jeffpeterson commented 4 years ago

FileServer was timing out connections after 2 minutes. This PR disables the timeout, and instead we wait indefinitely for hyperfiles to load.

This PR also adds better FileServer error responses and FileServer tests.

mjtognetti commented 4 years ago

Getting an error when I run yarn tape:

# read header of new hyperfile

/Users/matt/Workspace/automerge/hypermerge/node_modules/secretstream-stream/index.js:86
    decrypt.bytes = sodium.crypto_secretstream_xchacha20poly1305_pull(state, plaintext.subarray(offset), decrypt.tag, ciphertext, ad)
                           ^
Error: EAGAIN, Resource temporarily unavailable
    at Object.decrypt (/Users/matt/Workspace/automerge/hypermerge/node_modules/secretstream-stream/index.js:86:28)
    at NoisePeer._decrypt (/Users/matt/Workspace/automerge/hypermerge/node_modules/noise-peer/index.js:207:40)
    at NoisePeer._recvtransport (/Users/matt/Workspace/automerge/hypermerge/node_modules/noise-peer/index.js:198:17)
    at NoisePeer._readframebody (/Users/matt/Workspace/automerge/hypermerge/node_modules/noise-peer/index.js:278:25)
    at NoisePeer._onreadable (/Users/matt/Workspace/automerge/hypermerge/node_modules/noise-peer/index.js:310:18)
    at Duplex.emit (events.js:198:13)
    at Duplex.EventEmitter.emit (domain.js:448:20)
    at emitReadable_ (_stream_readable.js:554:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)