target: DCC / target message backoff algorithm
[fw/openocd] / src / server / server.c
index c70a52220fb728d07710109d5fd141775ece9362..84ec1ac9bbfb1c59b66cb135bbea622d6461d70f 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "server.h"
 #include <target/target.h>
+#include <target/target_request.h>
 #include "openocd.h"
 #include "tcl_server.h"
 #include "telnet_server.h"
@@ -443,6 +444,13 @@ int server_loop(struct command_context *command_context)
                        poll_ok = true;
                }
 
+               /* This is a simple back-off algorithm where we immediately
+                * re-poll if we did something this time around.
+                *
+                * This greatly improves performance of DCC.
+                */
+               poll_ok = poll_ok || target_got_message();
+
                for (service = services; service; service = service->next)
                {
                        /* handle new connections on listeners */