Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision a6fe73dc359daa56b019dcdde93861707caf424a)
+++ server/server.cpp	(revision ab8fd4016449008d0189af819837030c163e458a)
@@ -991,4 +991,34 @@
          break;
       }
+      case MSG_TYPE_LEAVE_GAME:
+      {
+         cout << "Received a LEAVE_GAME message" << endl;
+
+         Player* p = findPlayerByAddr(mapPlayers, from);
+         Game* g = p->currentGame;
+
+         if (g == NULL) {
+            cout << "Player " << p->name << " is trying to leave a game, but is not currently in a game." << endl;
+
+            /// should send a response back, maybe a new message type is needed
+
+            break;
+         }
+
+         cout << "Game name: " << g->getName() << endl;
+         //p->currentGame = NULL;
+
+         // broadcast a messsage to other players so they know someone left the game
+         // also, check if the game has any players left. If not, remove it and send everyone a message so the game is gone from their lobby list
+
+         int numPlayers = g->getNumPlayers();
+
+         serverMsg.type = MSG_TYPE_GAME_INFO;
+         memcpy(serverMsg.buffer, &numPlayers, 4);
+         strcpy(serverMsg.buffer+4, g->getName().c_str());
+         broadcastResponse = true;
+
+         break;
+      }
       case MSG_TYPE_JOIN_GAME_ACK:
       {
@@ -1072,4 +1102,5 @@
          strcpy(serverMsg.buffer+4, gameName.c_str());
          broadcastResponse = true;
+
          break;
       }
