summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2016-11-10 09:20:36 -0500
committerHarrison Healey <harrisonmhealey@gmail.com>2016-11-10 09:20:36 -0500
commit39675afab4ba6e22b834aa6ff8d7dab2a35c5a8d (patch)
treefc3888fca22d64a3121902be09233337f74622d8 /api
parent70e0d5c298de3383e43f9b5df41d7e8f0e3ffb6e (diff)
downloadchat-39675afab4ba6e22b834aa6ff8d7dab2a35c5a8d.tar.gz
chat-39675afab4ba6e22b834aa6ff8d7dab2a35c5a8d.tar.bz2
chat-39675afab4ba6e22b834aa6ff8d7dab2a35c5a8d.zip
Only send WS hello event once authenticated (#4509)
Diffstat (limited to 'api')
-rw-r--r--api/web_conn.go8
-rw-r--r--api/web_hub.go6
-rw-r--r--api/websocket_router.go1
3 files changed, 12 insertions, 3 deletions
diff --git a/api/web_conn.go b/api/web_conn.go
index 52b5ba9de..c906b7c95 100644
--- a/api/web_conn.go
+++ b/api/web_conn.go
@@ -8,6 +8,7 @@ import (
"time"
"github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
l4g "github.com/alecthomas/log4go"
"github.com/gorilla/websocket"
@@ -142,6 +143,13 @@ func (webCon *WebConn) isAuthenticated() bool {
return webCon.SessionToken != ""
}
+func (webCon *WebConn) SendHello() {
+ msg := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_HELLO, "", "", webCon.UserId, nil)
+ msg.Add("server_version", fmt.Sprintf("%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash))
+ msg.DoPreComputeJson()
+ webCon.Send <- msg
+}
+
func (webCon *WebConn) ShouldSendEvent(msg *model.WebSocketEvent) bool {
// IMPORTANT: Do not send event if WebConn does not have a session
if !webCon.isAuthenticated() {
diff --git a/api/web_hub.go b/api/web_hub.go
index e59521879..73b94bf1d 100644
--- a/api/web_hub.go
+++ b/api/web_hub.go
@@ -119,9 +119,9 @@ func InvalidateCacheForUserSkipClusterSend(userId string) {
func (h *Hub) Register(webConn *WebConn) {
h.register <- webConn
- msg := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_HELLO, "", "", webConn.UserId, nil)
- msg.Add("server_version", fmt.Sprintf("%v.%v.%v", model.CurrentVersion, model.BuildNumber, utils.CfgHash))
- go Publish(msg)
+ if webConn.isAuthenticated() {
+ webConn.SendHello()
+ }
}
func (h *Hub) Unregister(webConn *WebConn) {
diff --git a/api/websocket_router.go b/api/websocket_router.go
index bdbd9f4d9..504e434b7 100644
--- a/api/websocket_router.go
+++ b/api/websocket_router.go
@@ -57,6 +57,7 @@ func (wr *WebSocketRouter) ServeWebSocket(conn *WebConn, r *model.WebSocketReque
resp := model.NewWebSocketResponse(model.STATUS_OK, r.Seq, nil)
resp.DoPreComputeJson()
conn.Send <- resp
+ conn.SendHello()
}
return