Kill code to ensure that our pipe is open before we write to the other
In practice, this appears to be both unnecessary and harmful. Although the first write happens effectively instantaneously, we can take several hundred milliseconds to read the second write, and Standalone can decide we are dead. This apparently fixes #783 for @dstillman, although I was never able to reproduce locally.
This commit is contained in:
parent
d104e4b106
commit
50ee61545a
|
@ -24,7 +24,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Zotero.IPC = new function() {
|
Zotero.IPC = new function() {
|
||||||
var _libc, _libcPath, _instancePipe, _user32, open, write, close, instancePipeOpen;
|
var _libc, _libcPath, _instancePipe, _user32, open, write, close;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize pipe for communication with connector
|
* Initialize pipe for communication with connector
|
||||||
|
@ -253,21 +253,12 @@ Zotero.IPC = new function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!defunct) {
|
if(!defunct) {
|
||||||
// make sure instance pipe is open and accepting input, so that we can receive
|
// Try to write to the pipe for 100 ms
|
||||||
// a response to whatever we're sending
|
var time = Date.now(), timeout = time+100, wroteToPipe;
|
||||||
if(!instancePipeOpen && _instancePipe.exists()) {
|
|
||||||
var time = Date.now();
|
|
||||||
Zotero.IPC.safePipeWrite(_instancePipe, "test\n", true);
|
|
||||||
Zotero.debug("IPC: Pipe took "+(Date.now() - time)+" ms to receive a cross-thread write");
|
|
||||||
instancePipeOpen = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to write to the pipe once a ms for 1000 ms
|
|
||||||
var timeout = Date.now()+1000, wroteToPipe;
|
|
||||||
do {
|
do {
|
||||||
wroteToPipe = Zotero.IPC.safePipeWrite(pipe, msg+"\n");
|
wroteToPipe = Zotero.IPC.safePipeWrite(pipe, msg+"\n");
|
||||||
} while(Date.now() < timeout && !wroteToPipe);
|
} while(Date.now() < timeout && !wroteToPipe);
|
||||||
if (wroteToPipe) Zotero.debug('IPC: Pipe took '+(Date.now()-(timeout-1000))+' ms to become available');
|
if (wroteToPipe) Zotero.debug('IPC: Pipe took '+(Date.now()-time)+' ms to become available');
|
||||||
success = success || wroteToPipe;
|
success = success || wroteToPipe;
|
||||||
defunct = !wroteToPipe;
|
defunct = !wroteToPipe;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user