Comments (3)
In server side logs, see this log.
topic.remSession not found at all usrtq6SdhZjOJQ tq6SdhZjOJQ E3u63uhk68M iul__liJc-4DD topic.handleLeaveRequest nil pssd &{Id:a897060c-45ed-4af1-987a-b7a90f80ae90 Topic:me Unsub:false}
Here is the piece of code from where this log came.
func (t *Topic) remSession(sess *Session, asUid types.Uid) (*perSessionData, bool) {
s := sess
if sess.multi != nil {
s = s.multi
}
pssd, ok := t.sessions[s]
if !ok {
fmt.Printf("topic.remSession not found at all %s %s %s %s", t.name, asUid, s.sid, s.uid)
// Session not found at all.
return nil, false
}
if pssd.uid == asUid || asUid.IsZero() {
delete(t.sessions, s)
return &pssd, true
}
for i := range pssd.muids {
if pssd.muids[i] == asUid {
pssd.muids[i] = pssd.muids[len(pssd.muids)-1]
pssd.muids = pssd.muids[:len(pssd.muids)-1]
t.sessions[s] = pssd
if len(pssd.muids) == 0 {
delete(t.sessions, s)
return &pssd, true
}
return &pssd, false
}
}
return nil, false
}
So somehow this leave request was able to bypass earlier checks set on if session was found or not.
A simple fix would be to just sent NotJoined error if session not found.
// handleLeaveRequest processes a session leave request.
func (t *Topic) handleLeaveRequest(msg *ClientComMessage, sess *Session) {
-------
if t.isInactive() {
}
// User wants to leave and unsubscribe.
if msg.init && msg.Leave.Unsub {
}
// User wants to leave without unsubscribing.
if pssd, _ := t.remSession(sess, asUid); pssd != nil {
-----------
} else {
fmt.Printf("DD topic.handleLeaveRequest nil pssd %+v\n", msg.Leave)
sess.queueOut(InfoNotJoined(msg.Id, msg.Original, msg.Timestamp))
}
}
If this looks good, let me know.
from chat.
Can you reproduce the problem with the latest Tinode server? I think something like this was fixed recently.
from chat.
Yes, it has been fixed. 2f632ec
Thanks.
from chat.
Related Issues (20)
- Info missing for recv/read messages in p2p/grp HOT 13
- "Canceled desc = context canceled" without any explanations HOT 3
- Error finding a topic by its tag with Postgres HOT 3
- Unable to create new root user using official container HOT 2
- Provide arm64-linux build HOT 2
- Unable to `{sub}` with `on_behalf_of` HOT 2
- generate error HOT 1
- Can't connect to external database HOT 4
- [Question] External config is not working as expected HOT 2
- crash when removing a topic with RethinkDB HOT 3
- A feature request for status values. HOT 2
- error: The data couldn’t be read because it isn’t in the correct format in IOS HOT 1
- Can't initialize postgres database (does not use configured database to init) HOT 1
- Error starting gRPC call. HttpRequestException: No connection could be made because the target machine actively refused it. (127.0.0.1:6061) SocketException: No connection could be made because the target machine actively refused it. HOT 3
- Support S3 Compatible Storage Providers HOT 7
- External jwt token authenticator HOT 2
- Tinode not triggering password reset emails HOT 3
- NOT WORKING VIDEO CALL OTHER INTERNET HOT 1
- Cluster Not Working, Error: [ cluster: call failed two gob: unknown type id or corrupted data ] HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chat.