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)
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)
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)
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
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