gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]