summaryrefslogtreecommitdiff
path: root/sapsocket.cc
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2015-12-27 05:22:52 +0100
committerJavier <dev.git@javispedro.com>2015-12-27 05:22:52 +0100
commit52fada92f5e502f77ad19486a98b896fdf667d85 (patch)
treeed52ee36df9f8360623335f85c64958b5add985b /sapsocket.cc
parentc4da0adbbd4f83bf47b71046f01cd9f12742ec7e (diff)
downloadsapd-52fada92f5e502f77ad19486a98b896fdf667d85.tar.gz
sapd-52fada92f5e502f77ad19486a98b896fdf667d85.zip
fix fragmentation header parsing
Diffstat (limited to 'sapsocket.cc')
-rw-r--r--sapsocket.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/sapsocket.cc b/sapsocket.cc
index cc6ea2e..c8219a9 100644
--- a/sapsocket.cc
+++ b/sapsocket.cc
@@ -7,7 +7,7 @@
#include "sapsocket.h"
#define DELAYED_ACK_TIME 1000
-#define RESEND_TIME 10000
+#define RESEND_TIME 5000
#define WINDOW_SIZE_MSGS 10
SAPSocket::SAPSocket(SAPConnection *conn, int sessionId, const SAPChannelInfo &chanInfo) :
@@ -92,7 +92,10 @@ void SAPSocket::setOpen(bool open)
void SAPSocket::acceptIncomingData(const QByteArray &data)
{
- SAProtocol::DataFrame frame = SAProtocol::unpackDataFrame(data, isWithSeqNum());
+ SAProtocol::DataFrame frame = SAProtocol::unpackDataFrame(data,
+ isReliable(), supportsFragmentation());
+
+ qDebug() << data.mid(0, 6).toHex() << frame.data.mid(0, 6).toHex();
if (isReliable()) {
quint16 expectedSeqNum = _inLastSeqNum + 1;
@@ -167,10 +170,10 @@ bool SAPSocket::isReliable() const
return _info.qosType() == SAPChannelInfo::QoSReliabilityEnable;
}
-bool SAPSocket::isWithSeqNum() const
+bool SAPSocket::supportsFragmentation() const
{
- return _info.qosType() == SAPChannelInfo::QoSReliabilityDisable ||
- _info.qosType() == SAPChannelInfo::QoSReliabilityEnable;
+ return _info.qosType() == SAPChannelInfo::QoSReliabilityEnable ||
+ _info.qosType() == SAPChannelInfo::QoSReliabilityDisable;
}
void SAPSocket::sendBlockAck(int seqNum)
@@ -184,9 +187,10 @@ void SAPSocket::sendBlockAck(int seqNum)
void SAPSocket::sendPacket(int seqNum, const QByteArray &data)
{
SAProtocol::DataFrame frame;
- frame.withSeqNum = isWithSeqNum();
+ frame.withSeqNum = isReliable();
frame.seqNum = seqNum;
- frame.unk_1 = 0; // Is this related to fragmentation?
+ frame.withFragStatus = supportsFragmentation();
+ frame.fragStatus = SAProtocol::FragmentNone;
frame.data = data;
peer()->writeDataToSession(_sessionId, SAProtocol::packDataFrame(frame));
}