aboutsummaryrefslogtreecommitdiff
path: root/worker/types/worker.go
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2019-05-19 09:50:17 +0000
committerDrew DeVault <sir@cmpwn.com>2019-05-19 11:51:20 -0400
commit34dd6bc6354cd3592ed51da83de1a0839e08a37d (patch)
tree6c65d68427ddd537eff30d44841ae8f7912f08c8 /worker/types/worker.go
parent7c6325977b55385bc65f0a08f4da8ed6dfede52a (diff)
worker/types/worker: set ID before sending message
The previous code set the message ID after sending it, which could result in the receiver reading the ID before it's set.
Diffstat (limited to 'worker/types/worker.go')
-rw-r--r--worker/types/worker.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/worker/types/worker.go b/worker/types/worker.go
index e2af61f..5647ae3 100644
--- a/worker/types/worker.go
+++ b/worker/types/worker.go
@@ -30,11 +30,13 @@ func NewWorker(logger *log.Logger) *Worker {
}
}
-func (worker *Worker) setCallback(msg WorkerMessage,
- cb func(msg WorkerMessage)) {
-
+func (worker *Worker) setId(msg WorkerMessage) {
msg.setId(nextId)
nextId++
+}
+
+func (worker *Worker) setCallback(msg WorkerMessage,
+ cb func(msg WorkerMessage)) {
if cb != nil {
worker.mutex.Lock()
@@ -59,6 +61,8 @@ func (worker *Worker) getCallback(msg WorkerMessage) (func(msg WorkerMessage),
func (worker *Worker) PostAction(msg WorkerMessage,
cb func(msg WorkerMessage)) {
+ worker.setId(msg)
+
if resp := msg.InResponseTo(); resp != nil {
worker.Logger.Printf("(ui)=> %T:%T\n", msg, resp)
} else {
@@ -72,6 +76,8 @@ func (worker *Worker) PostAction(msg WorkerMessage,
func (worker *Worker) PostMessage(msg WorkerMessage,
cb func(msg WorkerMessage)) {
+ worker.setId(msg)
+
if resp := msg.InResponseTo(); resp != nil {
worker.Logger.Printf("->(ui) %T:%T\n", msg, resp)
} else {