axeld + bonefish:
* Small style changes. * Currently ifdef'ed out potentially correct changes, that break Neon tests which otherwise succeed. Axel will investigate this further. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25530 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
91af9113d6
commit
ec1f43f304
@ -466,7 +466,7 @@ TCPEndpoint::Close()
|
||||
{
|
||||
TRACE("Close()");
|
||||
|
||||
MutexLocker lock(fLock);
|
||||
MutexLocker locker(fLock);
|
||||
|
||||
if (fState == LISTEN)
|
||||
delete_sem(fAcceptSemaphore);
|
||||
@ -488,7 +488,7 @@ TCPEndpoint::Close()
|
||||
bigtime_t maximum = absolute_timeout(socket->linger * 1000000LL);
|
||||
|
||||
while (fSendQueue.Used() > 0) {
|
||||
status = fSendList.Wait(lock, maximum);
|
||||
status = fSendList.Wait(locker, maximum);
|
||||
if (status == B_TIMED_OUT || status == B_WOULD_BLOCK)
|
||||
break;
|
||||
else if (status < B_OK)
|
||||
@ -497,8 +497,22 @@ TCPEndpoint::Close()
|
||||
|
||||
TRACE("Close(): after waiting, the SendQ was left with %lu bytes.",
|
||||
fSendQueue.Used());
|
||||
}
|
||||
#if 0
|
||||
// TODO: For the following to work we also need to be notified when TIME_WAIT
|
||||
// is entered.
|
||||
} else if (fRoute != NULL && (fRoute->flags & RTF_LOCAL) != 0) {
|
||||
// This is a local connection - just wait until we're done so that
|
||||
// the port is available again
|
||||
while (fState != CLOSED && fState != TIME_WAIT) {
|
||||
if (socket->error != B_OK)
|
||||
return socket->error;
|
||||
|
||||
status_t status = fSendList.Wait(locker);
|
||||
if (status < B_OK)
|
||||
return status;
|
||||
}
|
||||
#endif // 0
|
||||
}
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
@ -1117,7 +1131,13 @@ TCPEndpoint::_MarkEstablished()
|
||||
status_t
|
||||
TCPEndpoint::_WaitForEstablished(MutexLocker &locker, bigtime_t timeout)
|
||||
{
|
||||
#if 0
|
||||
// TODO: Checking for CLOSED seems correct, but breaks several neon tests.
|
||||
// When investigating this, also have a look at _Close() and _HandleReset().
|
||||
while (fState < ESTABLISHED && fState != CLOSED) {
|
||||
#else
|
||||
while (fState < ESTABLISHED) {
|
||||
#endif
|
||||
if (socket->error != B_OK)
|
||||
return socket->error;
|
||||
|
||||
@ -1141,6 +1161,13 @@ TCPEndpoint::_Close()
|
||||
T(State(this));
|
||||
|
||||
fFlags |= FLAG_DELETE_ON_CLOSE;
|
||||
|
||||
#if 0
|
||||
// TODO: Should probably be moved here (from _HandleReset()), but cf. the
|
||||
// comment in _WaitForEstablished().
|
||||
fSendList.Signal();
|
||||
_NotifyReader();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -1150,8 +1177,11 @@ TCPEndpoint::_HandleReset(status_t error)
|
||||
socket->error = error;
|
||||
_Close();
|
||||
|
||||
#if 1
|
||||
// TODO: Should be moved to _Close(), but cf. comment in _WaitForEstablished().
|
||||
fSendList.Signal();
|
||||
_NotifyReader();
|
||||
#endif
|
||||
|
||||
gSocketModule->notify(socket, B_SELECT_WRITE, error);
|
||||
gSocketModule->notify(socket, B_SELECT_ERROR, error);
|
||||
|
@ -32,7 +32,7 @@ public:
|
||||
|
||||
status_t InitCheck() const;
|
||||
|
||||
status_t Wait(MutexLocker &, bigtime_t timeout);
|
||||
status_t Wait(MutexLocker& locker, bigtime_t timeout = B_INFINITE_TIMEOUT);
|
||||
void Signal();
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user