[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet-scheme] 247/324: nse/client: Only call 'send-start!' after 'mq'
From: |
gnunet |
Subject: |
[gnunet-scheme] 247/324: nse/client: Only call 'send-start!' after 'mq' has been defined. |
Date: |
Tue, 21 Sep 2021 13:24:47 +0200 |
This is an automated email from the git hooks/post-receive script.
maxime-devos pushed a commit to branch master
in repository gnunet-scheme.
commit cebbfae04c8bfc110ed34d0e8392f24c1b11efd6
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Wed Sep 8 17:39:07 2021 +0200
nse/client: Only call 'send-start!' after 'mq' has been defined.
This addresses a theoretical race condition.
* gnu/gnunet/nse/client.scm
(connect)[mq-defined]: New variable.
(connect)[error-handler]: Wait on new variable.
(connect)[mq]: Signal new condition after 'mq' is defined.
---
gnu/gnunet/nse/client.scm | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/gnu/gnunet/nse/client.scm b/gnu/gnunet/nse/client.scm
index 194eaac..4420d23 100644
--- a/gnu/gnunet/nse/client.scm
+++ b/gnu/gnunet/nse/client.scm
@@ -44,6 +44,8 @@
make-atomic-box atomic-box-ref atomic-box-set!)
(only (fibers)
spawn-fiber)
+ (only (fibers conditions)
+ make-condition wait signal-condition!)
(only (gnu extractor enum)
symbol-value value->index)
(only (guile)
@@ -152,10 +154,15 @@ The procedures @var{updated}, @var{connected} and
@var{disconnected} are optiona
(set%! /:message-header '(type) s
(value->index (symbol-value message-type msg:nse:start)))
(send-message! mq s))
+ (define mq-defined (make-condition))
(define (error-handler error)
(case error
;; TODO report input errors?
((connection:connected)
+ ;; Make sure the message queue is actually bound to the variable
+ ;; @var{mq} before calling @code{send-start!}, as @code{send-start!}
+ ;; uses @var{mq}.
+ (wait mq-defined)
(send-start!)
(when connected (connected)))
;; TODO this means the server has closed the connection ...
@@ -165,4 +172,5 @@ The procedures @var{updated}, @var{connected} and
@var{disconnected} are optiona
(values))))
(define mq (connect/fibers config "nse" handlers error-handler
#:spawn spawn))
+ (signal-condition! mq-defined)
(%make-server estimate/box))))
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet-scheme] 246/324: mq,mq-impl: Remove TODOs about allocating memory., (continued)
- [gnunet-scheme] 246/324: mq,mq-impl: Remove TODOs about allocating memory., gnunet, 2021/09/21
- [gnunet-scheme] 245/324: mq-impl/stream: Eliminate 'return' argument of 'handle-input!'., gnunet, 2021/09/21
- [gnunet-scheme] 251/324: tests/utils: Move call-with-spawner from tests/mq-stream.scm., gnunet, 2021/09/21
- [gnunet-scheme] 221/324: mq-impl/stream: Delay knowing the port., gnunet, 2021/09/21
- [gnunet-scheme] 228/324: doc/fdl: Correct ‘quote’ typography., gnunet, 2021/09/21
- [gnunet-scheme] 231/324: doc: Document message verifiers., gnunet, 2021/09/21
- [gnunet-scheme] 236/324: mq-impl/stream: Close the port when stopping the fibers., gnunet, 2021/09/21
- [gnunet-scheme] 242/324: nse/client: Remove unused fields., gnunet, 2021/09/21
- [gnunet-scheme] 243/324: doc/scheme-gnunet.tm: Correct use of 'connected' and 'updated'., gnunet, 2021/09/21
- [gnunet-scheme] 237/324: mq-impl/stream: Allow closing the queue on request., gnunet, 2021/09/21
- [gnunet-scheme] 247/324: nse/client: Only call 'send-start!' after 'mq' has been defined.,
gnunet <=
- [gnunet-scheme] 248/324: tests/mq-stream: Add missing parenthesis., gnunet, 2021/09/21
- [gnunet-scheme] 249/324: nse/client: Prepare for auto-reconnecting., gnunet, 2021/09/21
- [gnunet-scheme] 250/324: doc: Document that (gnu gnunet nse client) reconnects., gnunet, 2021/09/21
- [gnunet-scheme] 253/324: nse/client: Correct type documentation of <server>., gnunet, 2021/09/21
- [gnunet-scheme] 254/324: doc: Document how to disconnect from the NSE server., gnunet, 2021/09/21
- [gnunet-scheme] 258/324: build: Install compiled Guile modules in appropriate location., gnunet, 2021/09/21
- [gnunet-scheme] 256/324: nse/client: Verify positivity of estimate., gnunet, 2021/09/21
- [gnunet-scheme] 257/324: git: Mark .scm as Scheme files for diffing purposes., gnunet, 2021/09/21
- [gnunet-scheme] 261/324: git: Ignore some files created by Emacs., gnunet, 2021/09/21
- [gnunet-scheme] 259/324: build: Install the HTML and PDF documentation., gnunet, 2021/09/21