aux/socket: patch scheduling bug in socket egg
It's possible for the thread to be interrupted between configuring the timeout and the file descriptor wait. This causes a low-probability 60 second wait until the timeout expires. Now that this is fixed, we can set a normal timeout on the socket once again, so do that. Link: https://github.com/ursetto/socket-egg/pull/7
This commit is contained in:
parent
fa3103ac82
commit
84207df87d
3 changed files with 24 additions and 2 deletions
|
|
@ -7,7 +7,8 @@ _: prevpkgs: {
|
|||
|
||||
socket = preveggs.socket.overrideAttrs (o: {
|
||||
preBuild = null;
|
||||
postPatch = "echo 'touch socket-config' >> build-socket-config";
|
||||
patches = (o.patches or []) ++ [ ./socket.diff ];
|
||||
postPatch = null;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
21
aux/socket.diff
Normal file
21
aux/socket.diff
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
diff --git a/build-socket-config b/build-socket-config
|
||||
index 7061553..a9b120f 100755
|
||||
--- a/build-socket-config
|
||||
+++ b/build-socket-config
|
||||
@@ -3,3 +3,4 @@
|
||||
echo "(import scheme)" > socket-config.scm
|
||||
echo "(import (chicken platform))" >> socket-config.scm
|
||||
./socket-features >> socket-config.scm
|
||||
+touch socket-config
|
||||
diff --git a/socket.egg b/socket.egg
|
||||
index 70c3b56..fa876f3 100644
|
||||
--- a/socket.egg
|
||||
+++ b/socket.egg
|
||||
@@ -13,6 +13,7 @@
|
||||
(source-dependencies "socket.scm")
|
||||
(component-dependencies socket-config)
|
||||
(csc-options "-O2" "-d1"
|
||||
+ "-disable-interrupts"
|
||||
"-X" "socket-config"
|
||||
"-X" "feature-test-syntax"
|
||||
"-D" "scan-buffer-line-returns-3-vals")))
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
(define *daemon*
|
||||
(make-parameter
|
||||
(parameterize
|
||||
((socket-send-buffer-size 4096) (socket-send-size 4096) (socket-receive-timeout #f) (socket-send-timeout #f))
|
||||
((socket-send-buffer-size 4096) (socket-send-size 4096) (socket-receive-timeout 5000) (socket-send-timeout 5000))
|
||||
(let ((unix-socket (socket af/unix sock/stream)))
|
||||
(socket-connect unix-socket (unix-address "/nix/var/nix/daemon-socket/socket"))
|
||||
(let-values (((in-port out-port) (socket-i/o-ports unix-socket)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue