From 418c360e24c2fdce701aae6ea6be9a7122d0c26f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Johan=20Th=C3=B6rnblom?= <johan.thornblom@hotmail.com>
Date: Mon, 21 Mar 2022 21:20:20 +0100
Subject: [PATCH] m

---
 Lab_4/Twidder/server.py        | 21 +++++++++++++++------
 Lab_4/Twidder/static/client.js |  4 ----
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/Lab_4/Twidder/server.py b/Lab_4/Twidder/server.py
index d8b132c..11eecf9 100644
--- a/Lab_4/Twidder/server.py
+++ b/Lab_4/Twidder/server.py
@@ -5,6 +5,8 @@ import uuid
 import database_helper
 import json
 from flask_sock import Sock
+import threading
+
 from gevent import monkey
 monkey.patch_all()
 
@@ -28,7 +30,7 @@ sock = Sock(app)
 
 app.debug = True
 session = {'token': ("email", "wsObj")}
-
+lock = threading.Lock()
 
 
 @app.route('/')
@@ -86,6 +88,8 @@ def echo(socket):
 
         # sign out if I am logged in somewhere else
         print(session)
+        
+        lock.acquire()
         for token in list(session.keys()):
             if session[token][0] == myEmail and token != myToken:
                 if session[token][1] != "":
@@ -93,6 +97,8 @@ def echo(socket):
                     session[token][1].close()
                 print("You got kicked out")
                 session.pop(token)
+        lock.release()
+
         print(session)
 
         # Put socket in global dict so server knows my connection is open
@@ -127,7 +133,9 @@ def sign_in():
 
     # Generate a random token 
     token = str(uuid.uuid4())
+    lock.acquire()
     session[token] = (email, "")
+    lock.release()
     
     # return the token in the Authorization header
     response = make_response(jsonify({})) #"Server inserted user data into database"   
@@ -195,15 +203,16 @@ def sign_out():
         return jsonify({}), tmp[1]
     
     # Close my socket
-    print(session)
+    lock.acquire()
     try:
         session[token][1].close()
     except:
         pass # samma sak som ingenting
-    print(session)
-
-    # set user to not logged in
-    session.pop(token)
+    try:
+        session.pop(token)
+    except:
+        pass
+    lock.release()
 
     return jsonify({}), 204 # "Successfully signed out")
 
diff --git a/Lab_4/Twidder/static/client.js b/Lab_4/Twidder/static/client.js
index a26ecfd..5f255d9 100644
--- a/Lab_4/Twidder/static/client.js
+++ b/Lab_4/Twidder/static/client.js
@@ -67,10 +67,6 @@ function connectWithSocket() {
         switch (response["action"]) {
             case "signOut":
 
-                // If old socket open, close it.
-                socket.close();
-                console.log(response);
-
                 // Reset token in the localStorage
                 localStorage.setItem("currentUser", "");
                 localStorage.setItem("homeEmail", "");
-- 
GitLab