Skip to content

TCP thread conccurency/synchronization issue #77

Open

Description

@lmcdasi

I have threading issue when using TCP. The issue arrives when jain sip stack sends the 1st SIP out via SipDialog.sendRequest:

(a) thread#1 executes: sendTCPMessage which calls sendBytes (clientSock = null -> openOutgoingConnection) -> writeChunks -> send
In "NioTcpMessageProcessor.send" at then end it will execute: selector.wakeup
(b) thread#2 wakes up since it is on selector.select and will execute write. In the write method line #214 nioHandler.getMessageChannel will return null and thus have a 'Dead socketChannel'
(c) thread#1 returns in sendTCPMessage and since sock != socketChannel 1st time it will excute:
nioHandler.putMessageChannel(sock, this);

But then this is too late. The 1st SipDialog.sendRequest is not sent out & the stack does not even retry because it does not detect this as a failure.
I have added myself a stack trace in the putMessageChannel to confirm that this is what happens.

siptcperror.log

Activity

  1. lmcdasi commented on Jan 19, 2022

    @lmcdasi
    Author

    NIOHandler - openOutgoingConnection method, connected boolean is wrong. On line #379 replacing connected in if with:

    if (attempted && (clientSock!= null && clientSock.isBlocking() && !clientSock.isConnected()))

    would be more appropriate. The removeSocket in finally should happen only if clientSock is blocking & it is not connected.

  2. vladimirralev commented on Jan 27, 2022

    @vladimirralev
    Collaborator

    Hey, thanks. Looks good to me. Please do a pull request I will try to get to it in the next week or so.

  3. lmcdasi commented on Jan 27, 2022

    @lmcdasi
    Author
  4. lmcdasi commented on Feb 10, 2022

    @lmcdasi
    Author

    Hi, any update regarding the merge request ? I really need this fix. Thx.

  5. YiuTerran commented on Mar 17, 2022

    @YiuTerran

    @vladimirralev please review the pr...

  6. added a commit that references this issue on Jan 8, 2023
    bf4315b
  7. added a commit that references this issue on Jan 15, 2023
    1fb9411
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions