Patent ID: 7636313

Claim:
In a network environment that includes a sending computing system and a receiving computing system that communicate with each other using a reliable communication protocol in which a message to be sent from the sending computing system to the receiving computing system is broken into a plurality of packets, and in which the receiving computing system acknowledges receipt of every two or more packets, a method for the sending computing system to quickly, efficiently and reliably send the message to the receiving computing system notwithstanding that acknowledgement of the final packet is delayed, the method comprising the following: an act of receiving, in the sending computing system, a request to send a message; an act of placing the message, by the sending computing system, into a send queue; an act of determining, by the sending computing system, that there is more than a predetermined threshold of data in the send queue when the message is included in the send queue; in response to determining that there is more that the predetermined threshold of data in the send queue, an act of sending a plurality of packets, by the sending computing system, over a connection to the receiving computing system; receiving, by the sending computing system, one or more acknowledgements corresponding to the plurality of packets sent; after receiving each of the one or more acknowledgements, performing an act of evaluating, by the sending computing system, whether the amount of unacknowledged data in the send queue is less than or equal to the predetermined threshold, wherein when it is determined that the amount of unacknowledged data in the send queue is less than or equal to the predetermined threshold, the sending computing system further performing the following acts: an act of copying the remaining data from the send queue into an internal buffer; an act of responding to the request to send the message with an indication that transmission of the message is complete, and only after the act of responding to the request, an act of receiving a final acknowledgement from the receiving computing system acknowledging receipt of the final packet.