@@ -481,7 +481,7 @@ def parseSIPMessage(self, data):
481
481
482
482
class SIPClient ():
483
483
def __init__ (self , server , port , username , password , myIP = None , myPort = 5060 , callCallback = None ):
484
- self .NSD = True
484
+ self .NSD = False
485
485
self .server = server
486
486
self .port = port
487
487
self .hostname = socket .gethostname ()
@@ -569,6 +569,9 @@ def parseMessage(self, message):
569
569
debug ("TODO: Add 400 Error on non processable request" )
570
570
571
571
def start (self ):
572
+ if self .NSD == True :
573
+ raise RunTimeError ("Attempted to start already started SIPClient" )
574
+ self .NSD = True
572
575
self .s = socket .socket (socket .AF_INET , socket .SOCK_DGRAM )
573
576
#self.out = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
574
577
self .s .bind ((self .myIP , self .myPort ))
@@ -596,17 +599,19 @@ def genTag(self):
596
599
return tag
597
600
598
601
def genSIPVersionNotSupported (self , request ):
599
- regRequest = "SIP/2.0 505 SIP Version Not Supported\r \n "
600
- regRequest += "Via: SIP/2.0/UDP " + request .headers ['Via' ]['address' ][0 ]+ ":" + request .headers ['Via' ]['address' ][1 ]+ ";branch=" + request .headers ['Via' ]['branch' ]+ "\r \n "
601
- regRequest += "From: " + request .headers ['From' ]['raw' ]+ ";tag=" + request .headers ['From' ]['tag' ]+ "\r \n "
602
- regRequest += "To: " + request .headers ['To' ]['raw' ]+ ";tag=" + self .genTag ()+ "\r \n "
603
- regRequest += "Call-ID: " + request .headers ['Call-ID' ]+ "\r \n "
604
- regRequest += "CSeq: " + request .headers ['CSeq' ]['check' ]+ " " + request .headers ['CSeq' ]['method' ]+ "\r \n "
605
- regRequest += "Contact: " + request .headers ['Contact' ]+ "\r \n " #TODO: Add Supported
606
- regRequest += "User-Agent: pyVoIP " "" + pyVoIP .__version__ + "\r \n "
607
- regRequest += "Warning: 399 GS \" Unable to accept call\" \r \n "
608
- regRequest += "Allow: " + (", " .join (pyVoIP .SIPCompatibleMethods ))+ "\r \n "
609
- regRequest += "Content-Length: 0\r \n \r \n "
602
+ response = "SIP/2.0 505 SIP Version Not Supported\r \n "
603
+ response += "Via: SIP/2.0/UDP " + request .headers ['Via' ]['address' ][0 ]+ ":" + request .headers ['Via' ]['address' ][1 ]+ ";branch=" + request .headers ['Via' ]['branch' ]+ "\r \n "
604
+ response += "From: " + request .headers ['From' ]['raw' ]+ ";tag=" + request .headers ['From' ]['tag' ]+ "\r \n "
605
+ response += "To: " + request .headers ['To' ]['raw' ]+ ";tag=" + self .genTag ()+ "\r \n "
606
+ response += "Call-ID: " + request .headers ['Call-ID' ]+ "\r \n "
607
+ response += "CSeq: " + request .headers ['CSeq' ]['check' ]+ " " + request .headers ['CSeq' ]['method' ]+ "\r \n "
608
+ response += "Contact: " + request .headers ['Contact' ]+ "\r \n " #TODO: Add Supported
609
+ response += "User-Agent: pyVoIP " "" + pyVoIP .__version__ + "\r \n "
610
+ response += "Warning: 399 GS \" Unable to accept call\" \r \n "
611
+ response += "Allow: " + (", " .join (pyVoIP .SIPCompatibleMethods ))+ "\r \n "
612
+ response += "Content-Length: 0\r \n \r \n "
613
+
614
+ return response
610
615
611
616
def genAuthorization (self , request ):
612
617
HA1 = hashlib .md5 (self .username .encode ('utf8' )+ b':' + request .authentication ['realm' ].encode ('utf8' )+ b':' + self .password .encode ('utf8' )).hexdigest ().encode ('utf8' )
0 commit comments