diff --git a/svr-chansession.c b/svr-chansession.c
index c36511469f61928237c15a4a24a6cea3054d0818..c04d592d80694de34e757bba91a30ea935525766 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -439,6 +439,7 @@ static void get_termmodes(struct ChanSess *chansess) {
 
 	if (len == 0) {
 		TRACE(("leave get_termmodes: empty terminal modes string"))
+		return;
 	}
 
 	while (((opcode = buf_getbyte(ses.payload)) != 0x00) && opcode <= 159) {