Lines Matching defs:packet

181 TCPPacket::SetNext(TCPPacket* packet)
183 fNext = packet;
219 for (TCPPacket* packet = fFirstPacket;
220 packet != NULL && windowSize > packet->DataSize();
221 packet = packet->Next())
222 windowSize -= packet->DataSize();
246 TCPPacket* packet = new(nothrow) TCPPacket();
247 if (packet == NULL)
249 error = packet->SetTo(NULL, 0, fAddress, fPort, address, port,
252 delete packet;
255 error = _Send(packet);
278 TCPPacket* packet = new(nothrow) TCPPacket();
279 if (packet == NULL)
281 status_t error = packet->SetTo(NULL, 0, fAddress, fPort, fRemoteAddress,
284 delete packet;
287 error = _Send(packet);
310 TCPPacket* packet = NULL;
316 packet = _PeekPacket();
317 if (packet == NULL && fRemoteState != TCP_SOCKET_STATE_OPEN)
319 if (packet == NULL && timeout > 0LL)
321 } while (packet == NULL && system_time() - startTime < timeout);
322 if (packet == NULL) {
328 uint32 packetOffset = fNextSequence - packet->SequenceNumber();
329 size_t readBytes = packet->DataSize() - packetOffset;
333 memcpy(buffer, (uint8*)packet->Data() + packetOffset, readBytes);
335 if (!packet->ProvidesSequenceNumber(fNextSequence + readBytes)) {
337 delete packet;
338 packet = NULL;
342 if (packet == NULL && *bytesRead < bufferSize) {
348 packet = _PeekPacket();
349 if (packet == NULL && fRemoteState != TCP_SOCKET_STATE_OPEN)
352 if (packet == NULL) {
356 readBytes = packet->DataSize();
360 memcpy(buffer, packet->Data(), readBytes);
362 if (readBytes == packet->DataSize()) {
364 delete packet;
389 TCPPacket* packet = new(nothrow) TCPPacket();
390 if (packet == NULL)
392 status_t error = packet->SetTo(buffer, bufferSize, fAddress, fPort,
396 delete packet;
399 return _Send(packet);
408 for (TCPPacket* packet = fFirstSentPacket; packet != NULL;
409 packet = fFirstSentPacket) {
410 if (packet->SequenceNumber() >= number)
412 fFirstSentPacket = packet->Next();
413 delete packet;
420 TCPSocket::ProcessPacket(TCPPacket* packet)
424 if ((packet->Flags() & TCP_FIN) != 0) {
431 if ((packet->Flags() & TCP_SYN) != 0
432 && (packet->Flags() & TCP_ACK) != 0) {
433 fNextSequence = fAcknowledgeNumber = packet->SequenceNumber() + 1;
435 delete packet;
442 if ((packet->Flags() & TCP_ACK) != 0) {
449 if (packet->DataSize() == 0) {
451 delete packet;
458 if (packet->SequenceNumber() < fAcknowledgeNumber) {
460 delete packet;
467 packet->SetNext(NULL);
468 fFirstPacket = fLastPacket = packet;
469 } else if (fLastPacket->SequenceNumber() < packet->SequenceNumber()) {
472 packet->SetNext(NULL);
473 fLastPacket->SetNext(packet);
474 fLastPacket = packet;
475 } else if (fFirstPacket->SequenceNumber() > packet->SequenceNumber()) {
479 packet->SequenceNumber(),
480 packet->SequenceNumber() + packet->DataSize() - 1,
482 packet->SetNext(fFirstPacket);
483 fFirstPacket = packet;
484 } else if (fFirstPacket->SequenceNumber() == packet->SequenceNumber()) {
485 TRACE_QUEUE("%s(): dropping due to identical first packet\n", __func__);
486 delete packet;
493 if (queuedPacket->SequenceNumber() == packet->SequenceNumber()) {
494 TRACE_QUEUE("TCPSocket::EnqueuePacket(): TCP packet dropped\n");
495 // we may be waiting for a previous packet
496 delete packet;
500 > packet->SequenceNumber()) {
501 packet->SetNext(queuedPacket->Next());
502 queuedPacket->SetNext(packet);
507 while (packet != NULL && packet->SequenceNumber() == fAcknowledgeNumber) {
508 fAcknowledgeNumber = packet->SequenceNumber() + packet->DataSize();
509 packet = packet->Next();
518 for (TCPPacket* packet = fFirstPacket; packet != NULL;
519 packet = packet->Next()) {
520 if (packet->ProvidesSequenceNumber(fNextSequence))
521 return packet;
535 TCPPacket* packet = fFirstPacket;
536 fFirstPacket = packet->Next();
539 packet->SetNext(NULL);
541 packet->SequenceNumber(),
542 packet->SequenceNumber() + packet->DataSize() - 1);
543 return packet;
546 for (TCPPacket* packet = fFirstPacket;
547 packet != NULL && packet->Next() != NULL;
548 packet = packet->Next()) {
549 if (packet->Next()->ProvidesSequenceNumber(fNextSequence)) {
550 TCPPacket* nextPacket = packet->Next();
551 packet->SetNext(nextPacket->Next());
553 fLastPacket = packet;
566 TCPSocket::_Send(TCPPacket* packet, bool enqueue)
568 ChainBuffer buffer((void*)packet->Data(), packet->DataSize());
570 packet->SequenceNumber(), fAcknowledgeNumber, packet->Flags(),
574 if (packet->SequenceNumber() == fSequenceNumber)
575 fSequenceNumber += packet->DataSize();
578 _EnqueueOutgoingPacket(packet);
588 for (TCPPacket* packet = fFirstSentPacket; packet != NULL;
589 packet = packet->Next()) {
590 ChainBuffer buffer((void*)packet->Data(), packet->DataSize());
592 packet->SequenceNumber(), fAcknowledgeNumber, packet->Flags(),
602 TCPSocket::_EnqueueOutgoingPacket(TCPPacket* packet)
605 fLastSentPacket->SetNext(packet);
606 fLastSentPacket = packet;
608 fFirstSentPacket = fLastSentPacket = packet;
622 for (TCPPacket* packet = fFirstPacket; packet != NULL;
623 packet = packet->Next()) {
624 TRACE_QUEUE("TCP: Queue: %lx\n", packet->SequenceNumber());
639 TCPPacket* packet = new(nothrow) TCPPacket();
640 if (packet == NULL)
642 status_t error = packet->SetTo(NULL, 0, fAddress, fPort, fRemoteAddress,
645 delete packet;
648 error = _Send(packet, false);
649 delete packet;
770 TCPPacket* packet = new(nothrow) TCPPacket();
771 if (packet == NULL)
773 status_t error = packet->SetTo((uint32*)data + header->dataOffset,
777 socket->ProcessPacket(packet);
779 delete packet;