@@ -107,12 +107,8 @@ class RTSPClient(basic.LineReceiver):
107107
108108 session = None # RTSP Session
109109
110- sent_options = False
111110 sent_setup = False
112111 sent_play = False
113- sent_describe = False
114- sent_parameter = False
115- sent_bandwidth = False
116112
117113 def sendCommand (self , command , path ):
118114 """ Sends off an RTSP command
@@ -210,16 +206,13 @@ def lineReceived(self, line):
210206 key , val = line .split (':' , 1 )
211207 val = val .lstrip ()
212208 self .handleHeader (key , val )
213- if key .lower () == 'content-length' :
214- self .content_length = int (val )
215- self .length = self .content_length
216209 else :
217210 # End of the headers has been reached
218211 if self .content_length is not None :
219- self ._handleEndHeaders ()
212+ self ._handleEndHeaders (self . headers )
220213 self .setRawMode ()
221214 else :
222- self ._handleEndHeaders ()
215+ self ._handleEndHeaders (self . headers )
223216 self .firstLine = 1
224217
225218 def connectionMade (self ):
@@ -238,7 +231,7 @@ def connectionMade(self):
238231
239232 def handleStatus (self , version , status , message ):
240233 """ Called when the status header is received """
241- print (status )
234+ print ('Status: %s' % status )
242235
243236 def handleHeader (self , key , value ):
244237 """ Called when a single header is received
@@ -278,17 +271,27 @@ def sendNextMessage(self):
278271 return True
279272 return False
280273
281- def _handleEndHeaders (self ):
274+ def _handleEndHeaders (self , headers ):
282275 """ Internal handleEndHeaders
283- Checks the server's CSeq """
284- if self .headers .get ('cseq' ):
285- serverCSeq = int (self .headers ['cseq' ][0 ])
276+ Checks the server's CSeq and for content-length """
277+ try : self .header_file
278+ except AttributeError :
279+ self .header_file = open ('headers.txt' , 'wb' )
280+ headerstr = '\r \n ' .join ('%s: %s' % (k ,v [0 ]) for k ,v in headers .items ())
281+ self .header_file .write (headerstr )
282+ self .header_file .write ('\r \n ' )
283+
284+ if headers .get ('cseq' ):
285+ serverCSeq = int (headers ['cseq' ][0 ])
286286 if serverCSeq != self .cseq - 1 :
287287 print ('Server CSeq != Client CSeq: %s != %s' %
288288 (serverCSeq , self .cseq - 1 ))
289- self .handleEndHeaders ()
289+ if headers .get ('content-length' ):
290+ self .content_length = int (headers ['content-length' ][0 ])
291+ self .length = self .content_length
292+ self .handleEndHeaders (headers )
290293
291- def handleEndHeaders (self ):
294+ def handleEndHeaders (self , headers ):
292295 """ Called when all headers have been received """
293296 if self .content_length is not None :
294297 # We call sendNextMessage after the response has been received
@@ -303,7 +306,6 @@ def handleResponseEnd(self, data):
303306 if self .content_length :
304307 self .content_length = None
305308 self .handleContentResponse (data , self .content_type )
306- print ('resp end' )
307309 self .sendNextMessage ()
308310 self .content_type = None
309311 elif self .rtsp_length :
@@ -321,7 +323,7 @@ def handleResponsePart(self, data):
321323
322324 def rawDataReceived (self , data ):
323325 """ Called when data is received in raw data mode
324- Gathers self.content-length worth of data
326+ Gathers self.content-length worth of data in attach_buffer
325327 Returns what it doesn't use """
326328 if self .length is not None :
327329 self .attach_buffer .write (data )
@@ -367,6 +369,11 @@ class RDTClient(RTSPClient):
367369 prev_stream_num = None
368370 streamids = []
369371
372+ sent_options = False
373+ sent_describe = False
374+ sent_parameter = False
375+ sent_bandwidth = False
376+
370377 EOF = 0xff06
371378 LATENCY_REPORT = 0xff08
372379
@@ -390,10 +397,9 @@ class RDTClient(RTSPClient):
390397 # .1.. .... = Slow data & 0x40: 1
391398 # ..00 0011 = Asm Rule & 0x3F: 3
392399
393- def handleEndHeaders (self ):
394- if self .headers .get ('realchallenge1' ):
395- self .realchallenge1 = self .headers ['realchallenge1' ][0 ]
396- print ('heh %s' % self .content_length )
400+ def handleEndHeaders (self , headers ):
401+ if headers .get ('realchallenge1' ):
402+ self .realchallenge1 = headers ['realchallenge1' ][0 ]
397403 if self .content_length is None :
398404 self .sendNextMessage ()
399405
@@ -535,7 +541,6 @@ def sendNextMessage(self):
535541 """ This method goes in order sending messages to the server:
536542 OPTIONS, DESCRIBE, SETUP, SET_PARAMETER, SET_PARAMETER, PLAY
537543 Returns True if it sent a packet, False if it didn't """
538- print ('nxt msg' )
539544 if not self .sent_options :
540545 self .sent_options = True
541546 self ._sendOptions ()
@@ -546,13 +551,11 @@ def sendNextMessage(self):
546551 return True
547552 if not self .sent_setup :
548553 self .sent_setup = True
549- print ('setup' )
550554 challenge_tuple = RealChallenge .compute (self .realchallenge1 )
551555 headers = {'RealChallenge2' : '%s, sd=%s' % challenge_tuple }
552556 self ._sendSetup (headers )
553557 return True
554558 if self .streamids :
555- print ('setup' )
556559 self ._sendSetup (streamid = self .streamids .pop (0 ))
557560 return True
558561 if not self .sent_parameter :
0 commit comments