changeset 224:5f2249bef2e7

Some BEEP interoperability fixes: * Use `CRLF` for separating MIME headers in message payload. * The length of the payload includes the `CRLF` between payload and trailer.
author cmlenz
date Tue, 27 Sep 2005 15:31:51 +0000
parents 067bde207c23
children 5478cfdaa72b
files bitten/util/beep.py bitten/util/tests/beep.py
diffstat 2 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/util/beep.py
+++ b/bitten/util/beep.py
@@ -287,6 +287,7 @@
         This parses the frame header and decides which channel to pass it to.
         """
         log.debug('Handling frame [%s]', ' '.join(header))
+        log.debug('  with payload:\n%s', payload)
         msgno = None
         channel = None
         try:
@@ -739,7 +740,7 @@
                 hdrs.append('Content-Transfer-Encoding: ' +
                             self.content_encoding)
             hdrs.append('')
-            self._hdr_buf = '\n'.join(hdrs) + '\n'
+            self._hdr_buf = '\r\n'.join(hdrs) + '\r\n'
 
         ret_buf = ''
         if len(self._hdr_buf):
@@ -805,14 +806,14 @@
 
         headerbits = [self.cmd, self.channel.channelno, self.msgno,
                       self.done and '.' or '*', self.channel.seqno[1].value,
-                      len(data)]
+                      len(data) + 2]
         if self.cmd == 'ANS':
             assert self.ansno is not None
             headerbits.append(self.ansno)
         header = ' '.join([str(bit) for bit in headerbits])
         log.debug('Sending frame [%s]', header)
         frame = '\r\n'.join((header, data, 'END', ''))
-        self.channel.seqno[1] += len(data)
+        self.channel.seqno[1] += len(data) + 2
 
         return frame
 
--- a/bitten/util/tests/beep.py
+++ b/bitten/util/tests/beep.py
@@ -51,7 +51,7 @@
                 rest = rest[size:]
             self.sent_messages.append((cmd, channel, msgno, more, seqno, ansno,
                                        payload.strip()))
-            assert rest == '\r\nEND\r\n'
+            assert rest == 'END\r\n'
 
 
 class MockProfileHandler(object):
@@ -175,9 +175,9 @@
         channel = beep.Channel(self.session, 0, MockProfileHandler)
         channel.send_msg(beep.Payload('foo bar', None))
         channel.send_rpy(0, beep.Payload('nil', None))
-        self.assertEqual(('MSG', 0, 0, False, 0L, None, 'foo bar'),
+        self.assertEqual(('MSG', 0, 0, False, 0, None, 'foo bar'),
                          self.session.sent_messages[0])
-        self.assertEqual(('RPY', 0, 0, False, 8L, None, 'nil'),
+        self.assertEqual(('RPY', 0, 0, False, 11, None, 'nil'),
                          self.session.sent_messages[1])
 
     def test_send_message_msgno_incrementing(self):
@@ -188,12 +188,12 @@
         channel = beep.Channel(self.session, 0, MockProfileHandler)
         msgno = channel.send_msg(beep.Payload('foo bar', None))
         assert msgno == 0
-        self.assertEqual(('MSG', 0, msgno, False, 0L, None, 'foo bar'),
+        self.assertEqual(('MSG', 0, msgno, False, 0, None, 'foo bar'),
                          self.session.sent_messages[0])
         assert msgno in channel.msgnos
         msgno = channel.send_msg(beep.Payload('foo baz', None))
         assert msgno == 1
-        self.assertEqual(('MSG', 0, msgno, False, 8L, None, 'foo baz'),
+        self.assertEqual(('MSG', 0, msgno, False, 11, None, 'foo baz'),
                          self.session.sent_messages[1])
         assert msgno in channel.msgnos
 
@@ -271,16 +271,16 @@
         channel = beep.Channel(self.session, 0, MockProfileHandler)
         ansno = channel.send_ans(0, beep.Payload('foo bar', None))
         assert ansno == 0
-        self.assertEqual(('ANS', 0, 0, False, 0L, ansno, 'foo bar'),
+        self.assertEqual(('ANS', 0, 0, False, 0, ansno, 'foo bar'),
                          self.session.sent_messages[0])
         assert 0 in channel.ansnos
         ansno = channel.send_ans(0, beep.Payload('foo baz', None))
         assert ansno == 1
-        self.assertEqual(('ANS', 0, 0, False, 8L, ansno, 'foo baz'),
+        self.assertEqual(('ANS', 0, 0, False, 11, ansno, 'foo baz'),
                          self.session.sent_messages[1])
         assert 0 in channel.ansnos
         channel.send_nul(0)
-        self.assertEqual(('NUL', 0, 0, False, 16L, None, ''),
+        self.assertEqual(('NUL', 0, 0, False, 22, None, ''),
                          self.session.sent_messages[2])
         assert 0 not in channel.ansnos
 
Copyright (C) 2012-2017 Edgewall Software