diff --git a/src/mensactrl.c b/src/mensactrl.c
index 0e2d6605397cf6320ac201091004d2070a116c6a..9d1f99b5cfb27e5d08bca0b2e9fada25312ea6c2 100644
--- a/src/mensactrl.c
+++ b/src/mensactrl.c
@@ -167,10 +167,7 @@ int main(int argc, char *argv[]) {
 	mensafb = setup_fb(argv[1], 12, 5);
 
 	while (1) {
-		int64_t more;
-		size_t more_size = sizeof(more);
-
-                do {
+                while (1) {
 			zmq_msg_t message;
 			zmq_msg_init (&message);
 			zmq_msg_recv (&message, responder, 0);
@@ -179,10 +176,13 @@ int main(int argc, char *argv[]) {
 				handleCommand(mensafb, (struct packet *)zmq_msg_data(&message));
 			}
 
-			zmq_getsockopt (responder, ZMQ_RCVMORE, &more, &more_size);
+			if (!zmq_msg_more(&message)) {
+				zmq_msg_close(&message);
+				break;
+			}
 
-			zmq_msg_close (&message);
-		} while(more);
+			zmq_msg_close(&message);
+		}
 
 		zmq_send(responder, NULL, 0, 0);
 	}