summaryrefslogtreecommitdiffstats
path: root/src/server/events/Get.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-05-15 01:52:08 +0000
committerDavid Robillard <d@drobilla.net>2012-05-15 01:52:08 +0000
commit22209796627acfef17c53d4cf523eed3daa26c2b (patch)
treed800c6ba96f7f8f6673a4e7da6409760001095af /src/server/events/Get.cpp
parentf4f72247ae1f5eac8610a145c119accf0b6097d9 (diff)
downloadingen-22209796627acfef17c53d4cf523eed3daa26c2b.tar.gz
ingen-22209796627acfef17c53d4cf523eed3daa26c2b.tar.bz2
ingen-22209796627acfef17c53d4cf523eed3daa26c2b.zip
Eliminate long-duration event locks by generated responses in pre_process().
This also fixes some correctness issues, since the state at pre_process() time is actually the state that needs to be broadcast to clients. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4416 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Get.cpp')
-rw-r--r--src/server/events/Get.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp
index 7e140ae4..ac8db196 100644
--- a/src/server/events/Get.cpp
+++ b/src/server/events/Get.cpp
@@ -77,18 +77,17 @@ Get::post_process()
}
} else if (!_object && !_plugin) {
respond(NOT_FOUND);
- } else if (_request_client) {
- respond(SUCCESS);
- if (_request_client) {
- if (_object) {
- ObjectSender::send_object(_request_client, _object, true);
- } else if (_plugin) {
- _request_client->put(_uri, _plugin->properties());
- }
- }
- } else {
+ } else if (!_request_client) {
respond(CLIENT_NOT_FOUND);
}
+
+ respond(SUCCESS);
+
+ if (_object) {
+ ObjectSender::send_object(_request_client, _object, true);
+ } else if (_plugin) {
+ _request_client->put(_uri, _plugin->properties());
+ }
_lock.release();
}