Example #1
0
    def requestReceived(self, msg, addr):
        #RFC 3261 12.2.2
        if msg.method == "INVITE":
            st = ServerInviteTransaction(self.transport, self, msg, addr)
        else:
            st = ServerTransaction(self.transport, self, msg, addr)
        #dialog checking
        dialog = matchRequestToDialog(msg, self.dialogs)

        #untagged requests must be checked against ongoing transactions
        # see 8.2.2.2

        if not dialog and parseAddress(msg.headers['to'][0])[2].get(
                'tag', None):
            #uh oh, there was an expectation of a dialog
            #but we can't remember it (maybe we crashed?)
            st.messageReceivedFromTU(responseFromRequest(481, msg))
            return defer.succeed(st)
            #authentication
            #check for Require
        m = getattr(self, "process_" + msg.method, None)
        if not m:
            st.messageReceivedFromTU(responseFromRequest(405, msg))
            return defer.succeed(st)
        else:
            return defer.maybeDeferred(m, st, msg, addr,
                                       dialog).addCallback(lambda x: st)
Example #2
0
    def requestReceived(self, msg, addr):
        #RFC 3261 12.2.2
        if msg.method == "INVITE":
            st = ServerInviteTransaction(self.transport, self, msg, addr)
        else:
            st = ServerTransaction(self.transport, self, msg, addr)
        #dialog checking
        dialog = matchRequestToDialog(msg, self.dialogs)

        #untagged requests must be checked against ongoing transactions
        # see 8.2.2.2


        if not dialog and parseAddress(msg.headers['to'][0])[2].get('tag',None):
            #uh oh, there was an expectation of a dialog
            #but we can't remember it (maybe we crashed?)
            st.messageReceivedFromTU(responseFromRequest(481, msg))
            return defer.succeed(st)
            #authentication
            #check for Require
        m = getattr(self, "process_" + msg.method, None)
        if not m:
            st.messageReceivedFromTU(responseFromRequest(405, msg))
            return defer.succeed(st)
        else:
            return defer.maybeDeferred(m, st, msg, addr, dialog).addCallback(
                lambda x: st)
Example #3
0
            def gotSDP(mysdp):
                dialog.sessionDescription = mysdp
                if not mysdp.hasMediaDescriptions():
                    st.messageReceivedFromTU(responseFromRequest(406, msg))
                    return st
                if sdp:
                    self.maybeStartAudio(dialog, sdp)
                self.dialogs[dialog.getDialogID()] = dialog
                response = dialog.responseFromRequest(200, msg, mysdp.show())
                st.messageReceivedFromTU(response)

                dialog.ackTimerRetry(response)
Example #4
0
            def gotSDP(mysdp):
                dialog.sessionDescription = mysdp
                if not mysdp.hasMediaDescriptions():
                    st.messageReceivedFromTU(responseFromRequest(406, msg))
                    return st
                if sdp:
                    self.maybeStartAudio(dialog, sdp)
                self.dialogs[dialog.getDialogID()] = dialog
                response = dialog.responseFromRequest(200, msg, mysdp.show())
                st.messageReceivedFromTU(response)

                dialog.ackTimerRetry(response)
Example #5
0
            def gotSDP(mysdp):
                if not mysdp.hasMediaDescriptions():
                    st.messageReceivedFromTU(responseFromRequest(488, msg))
                    return st
                dialog.sessionDescription = mysdp
                if dialog.clientState == "reinviteSent":
                    st.messageReceivedFromTU(dialog.responseFromRequest(491, msg))
                else:
                    if sdp:
                        self.maybeStartAudio(dialog, sdp)
                    dialog.msg = msg
                    dialog.reinviteMsg = True
                    dialog.remoteAddress = parseAddress(msg.headers['from'][0])
                    response = dialog.responseFromRequest(200, msg, mysdp.show())
                    st.messageReceivedFromTU(response)
                    dialog.ackTimerRetry(response)

                return st
Example #6
0
            def gotSDP(mysdp):
                if not mysdp.hasMediaDescriptions():
                    st.messageReceivedFromTU(responseFromRequest(488, msg))
                    return st
                dialog.sessionDescription = mysdp
                if dialog.clientState == "reinviteSent":
                    st.messageReceivedFromTU(
                        dialog.responseFromRequest(491, msg))
                else:
                    if sdp:
                        self.maybeStartAudio(dialog, sdp)
                    dialog.msg = msg
                    dialog.reinviteMsg = True
                    dialog.remoteAddress = parseAddress(msg.headers['from'][0])
                    response = dialog.responseFromRequest(
                        200, msg, mysdp.show())
                    st.messageReceivedFromTU(response)
                    dialog.ackTimerRetry(response)

                return st