diff --git a/Protocol.cpp b/Protocol.cpp index 081fde22990a24d3f4c8409e6f1db729b859f66e..352e2c85b57766eaaacd57f15dbe5b2de754aad5 100644 --- a/Protocol.cpp +++ b/Protocol.cpp @@ -187,7 +187,7 @@ int Protocol::receive(int sockt, int type, int window, bool dataEndable){ if(status == NOISE){ continue; } else if(status == type) { - if(messages.back().sequence.to_ulong() != nextSequence){ + if(!messages.empty() && (messages.back().sequence.to_ulong() != nextSequence)){ response.reset(); vector<BYTE> val(1,(BYTE)nextSequence); response.setData(val, NACK); @@ -197,6 +197,7 @@ int Protocol::receive(int sockt, int type, int window, bool dataEndable){ vector<BYTE> val(1,(BYTE)messages.back().sequence.to_ulong()); response.setData(val, ACK); nextSequence = (messages.back().sequence.to_ulong()+1)%(MAXSIZE+1); + shouldSend = true; } else { //TODO: treat something? } diff --git a/server.cpp b/server.cpp index 40b87c6c17ff25799ea748f11c6c2450b55ac60c..e2ae51ecd3d43502af797c933db4ff14ce17a88b 100644 --- a/server.cpp +++ b/server.cpp @@ -17,6 +17,7 @@ int main(){ } if(status == CD){ cout << "Recebeu CD\n"; + cout << "CD: " << receiveProtocol.getDataAsString() << endl; cd(receiveProtocol.getDataAsString()); }else if(status == LS){ cout << "protocol data: " << receiveProtocol.getDataAsString() << endl; @@ -25,6 +26,7 @@ int main(){ cout << "LS: " << output << endl; sendProtocol.setData(vector<BYTE>(output.begin(), output.end()), OUTPUT); sendProtocol.transmit(sockt, WAIT_STOP); + cout << "finished transmit" << endl; }else if(status == PUT){ //TODO }else if(status == GET){