diff --git a/Protocol.cpp b/Protocol.cpp index 6a2613b5faedfb9b5c2a13f32f82070e8ba06516..ee6d55225a4508b98694c683a6f832d6b077212a 100644 --- a/Protocol.cpp +++ b/Protocol.cpp @@ -189,7 +189,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); @@ -199,6 +199,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 637f0ce24804343e5cf50193ad847e5a0d3587bc..345997c87b21d0d53774516bc0e59948187e81c2 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()); vector<BYTE> val(1,(BYTE)0); sendProtocol.setData(val, OK); @@ -28,6 +29,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){