$ git clone http://tcclient.ion.nu/tc_client.git
commit 22c545300c2cdddeaa378bde33b473a0485d0849
Author: Alicia <...>
Date:   Sun Apr 3 16:31:17 2016 +0200

    tc_client-gtk: handle only one sendmessage event at a time, and don't send empty lines.

diff --git a/ChangeLog b/ChangeLog
index 26fd078..7d13954 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.39:
 modbot: only use youtube-dl's 'ytsearch:' for --get-id, and only if it doesn't appear to be an ID already.
+tc_client-gtk: handle only one sendmessage event at a time, and don't send empty lines.
 0.38:
 Handle multi-line messages.
 Added option --hexcolors to print hex color codes instead of ANSI color escape codes.
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index be7eecd..ef4f4c9 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -741,15 +741,20 @@ gboolean inputkeys(GtkWidget* widget, GdkEventKey* event, void* data)
   return 0;
 }
 
+char sendingmsg=0;
 void sendmessage(GtkEntry* entry, void* data)
 {
   const char* msg=gtk_entry_get_text(entry);
+  if(!msg[0]){return;} // Don't send empty lines
+  if(sendingmsg){return;}
+  sendingmsg=1;
   inputhistory_add(msg);
   char* pm=0;
   if(!strncmp(msg, "/pm ", 4))
   {
     pm_open(&msg[4], 1);
     gtk_entry_set_text(entry, "");
+    sendingmsg=0;
     return;
   }
   else if(msg[0]!='/') // If we're in a PM tab, send messages as PMs
@@ -763,6 +768,7 @@ void sendmessage(GtkEntry* entry, void* data)
       if(!user) // Person we were PMing with left
       {
         gtk_entry_set_text(entry, "");
+        sendingmsg=0;
         return;
       }
       pm=strdup(user->nick);
@@ -791,6 +797,7 @@ void sendmessage(GtkEntry* entry, void* data)
      !strncmp(msg, "/topic ", 7))
   {
     gtk_entry_set_text(entry, "");
+    sendingmsg=0;
     return;
   }
   if(!strncmp(msg, "/msg ", 5))
@@ -807,6 +814,7 @@ void sendmessage(GtkEntry* entry, void* data)
         gtk_entry_set_text(entry, "");
         printchat("No such user", 0);
         free(pm);
+        sendingmsg=0;
         return;
       }
     }
@@ -825,6 +833,7 @@ void sendmessage(GtkEntry* entry, void* data)
   printchat_color(text, mycolor, 8, pm);
   gtk_entry_set_text(entry, "");
   free(pm);
+  sendingmsg=0;
 }
 
 void startsession(GtkButton* button, void* x)