diff --git a/sleekxmpp/plugins/xep_0047/stanza.py b/sleekxmpp/plugins/xep_0047/stanza.py
index f5b77c0e..fb0d4309 100644
--- a/sleekxmpp/plugins/xep_0047/stanza.py
+++ b/sleekxmpp/plugins/xep_0047/stanza.py
@@ -46,7 +46,7 @@ class Data(ElementBase):
self._set_attr('seq', str(value))
def get_data(self):
- b64_data = self.xml.text
+ b64_data = self.xml.text.strip()
if VALID_B64.match(b64_data).group() == b64_data:
return from_b64(b64_data)
else:
diff --git a/tests/test_stream_xep_0047.py b/tests/test_stream_xep_0047.py
index 485dafe5..d8cdd6a3 100644
--- a/tests/test_stream_xep_0047.py
+++ b/tests/test_stream_xep_0047.py
@@ -92,7 +92,89 @@ class TestInBandByteStreams(SleekTest):
self.assertEqual(events, set(['ibb_stream_start', 'callback']))
+ def testSendData(self):
+ """Test sending data over an in-band bytestream."""
+ streams = []
+ data = []
+
+ def on_stream_start(stream):
+ streams.append(stream)
+
+ def on_stream_data(d):
+ data.append(d['data'])
+
+ self.xmpp.add_event_handler('ibb_stream_start', on_stream_start)
+ self.xmpp.add_event_handler('ibb_stream_data', on_stream_data)
+
+ t = threading.Thread(name='open_stream',
+ target=self.xmpp['xep_0047'].open_stream,
+ args=('tester@localhost/receiver',),
+ kwargs={'sid': 'testing'})
+ t.start()
+
+ self.send("""
+
+
+
+ """)
+
+ self.recv("""
+
+ """)
+
+ t.join()
+
+ time.sleep(0.2)
+
+ stream = streams[0]
+
+
+ # Test sending data out
+ stream.send("Testing")
+
+ self.send("""
+
+
+ VGVzdGluZw==
+
+
+ """)
+
+ self.recv("""
+
+ """)
+
+ # Test receiving data
+ self.recv("""
+
+
+ aXQgd29ya3Mh
+
+
+ """)
+
+ self.send("""
+
+ """)
+
+ self.assertEqual(data, ['it works!'])
suite = unittest.TestLoader().loadTestsFromTestCase(TestInBandByteStreams)