diff -r 4332f0f7be53 -r acd3cd4aaceb genericopenlibs/openenvcore/backend/src/corebackend/usocketbase.cpp --- a/genericopenlibs/openenvcore/backend/src/corebackend/usocketbase.cpp Thu Aug 19 11:33:45 2010 +0300 +++ b/genericopenlibs/openenvcore/backend/src/corebackend/usocketbase.cpp Tue Aug 31 16:54:36 2010 +0300 @@ -37,12 +37,12 @@ TUint flags = iFcntlFlag; if( anArg & O_NONBLOCK ) { - ATOMICSOCKETOP(retVal = iSocket.SetOpt(KSONonBlockingIO, KSOLSocket),retVal = EBADF;) + retVal = iSocket.SetOpt(KSONonBlockingIO, KSOLSocket); flags |= O_NONBLOCK; } else { - ATOMICSOCKETOP(retVal = iSocket.SetOpt(KSOBlockingIO, KSOLSocket),retVal = EBADF;) + retVal = iSocket.SetOpt(KSOBlockingIO, KSOLSocket); flags &= ~O_NONBLOCK; } if (retVal == KErrNone) @@ -91,8 +91,7 @@ TSockXfrLength len; TRequestStatus tempStatus; - ATOMICSOCKETOP(iSocket.RecvOneOrMore(aBuf, 0, tempStatus, len),Complete(tempStatus,KErrBadHandle)) - // needs a completion which returns the length + iSocket.RecvOneOrMore(aBuf, 0, tempStatus, len); // needs a completion which returns the length User::WaitForRequest(tempStatus); if (tempStatus.Int() != KErrNone) { @@ -109,10 +108,10 @@ TRequestStatus tempStatus; TInt bytesWritten = 0; TInt bufLength = aBuf.Length(); - TSockXfrLength len = 0; + TSockXfrLength len; do { - ATOMICSOCKETOP(iSocket.Send(aBuf.Mid(bytesWritten), 0, tempStatus, len),Complete(tempStatus,KErrBadHandle)) + iSocket.Send(aBuf.Mid(bytesWritten), 0, tempStatus, len); User::WaitForRequest(tempStatus); if (len() == 0) { @@ -156,21 +155,20 @@ // recvfrom on a stream ignores the from address - get the peername if (from.Length()) SockName(1,from); - - ATOMICSOCKETOP(iSocket.RecvOneOrMore(aDesc,rSockFlags,tempStatus,len),Complete(tempStatus,KErrBadHandle)) + + iSocket.RecvOneOrMore(aDesc,rSockFlags,tempStatus,len); break; case SOCK_SEQPACKET: // get the peername (as above) if (from.Length()) SockName(1,from); - ATOMICSOCKETOP(iSocket.Recv(aDesc, rSockFlags, tempStatus),Complete(tempStatus,KErrBadHandle)) - + iSocket.Recv(aDesc, rSockFlags, tempStatus); break; default: // including SOCK_RAW, SOCK_DGRAM // assume datagram, as per behavior of original stdlib code: - ATOMICSOCKETOP(iSocket.RecvFrom(aDesc,from,rSockFlags,tempStatus,len),Complete(tempStatus,KErrBadHandle)) + iSocket.RecvFrom(aDesc,from,rSockFlags,tempStatus,len); } User::WaitForRequest(tempStatus); @@ -198,8 +196,8 @@ if (to.Length()==0) { - ATOMICSOCKETOP(iSocket.Send(aDesc,flags,tempStatus,len),Complete(tempStatus,KErrBadHandle)) - sendflg = ETrue; + iSocket.Send(aDesc,flags,tempStatus,len); + sendflg = ETrue; } else { @@ -207,7 +205,7 @@ Complete(aStatus,KErrNotSupported); // can't sendto a stream else { - ATOMICSOCKETOP(iSocket.SendTo(aDesc,to,flags,tempStatus,len),Complete(tempStatus,KErrBadHandle)) + iSocket.SendTo(aDesc,to,flags,tempStatus,len); sendflg = ETrue; } } @@ -244,23 +242,21 @@ TInt CSockDescBase::Poll(TUint aEvents) { TInt status = 0; + TInt err = 0; TInt readyEvents = 0; - TInt err = KErrNone; - ATOMICSOCKETOP(err = iSocket.GetOpt(KSOSelectPoll, KSOLSocket, status),err = KErrBadHandle) + err = iSocket.GetOpt(KSOSelectPoll, KSOLSocket, status); if (err != KErrNone) { // Poll should return any of the requested events. // In case of any error, the error will be set, and can be later checked by the descriptor. - - + + iPollErr = err; // For non-blocking socket, ensure to reset "iConnectInProgress" flag for a non-connected // socket on which a connection is pending. if(GetConnectionProgress()) { - iPollErr = err; - - SetConnectionProgress(EFalse); + SetConnectionProgress(EFalse); } // set all the events that has been requested for @@ -296,14 +292,8 @@ if (status & KSockSelectExcept) { - - if (GetConnectionProgress()) - { - TInt val = -1; - TInt ret = KErrNone; - ATOMICSOCKETOP(ret = iSocket.GetOpt(KSOSelectLastError, KSOLSocket, val),ret = KErrBadHandle) - - (iPollErr = ret) || (iPollErr = val); + if(GetConnectionProgress()) + { TBool setExceptFd = ETrue; // Some special checks for non-blocking sockets. if(aEvents & EReadyForWriting) @@ -370,7 +360,8 @@ { iSelectEvents() |= KSockSelectExcept; } - ATOMICSOCKETOP(iSocket.Ioctl(KIOctlSelect, aRequest, &iSelectEvents, KSOLSocket),Complete(aRequest,KErrBadHandle)) + + iSocket.Ioctl(KIOctlSelect, aRequest, &iSelectEvents, KSOLSocket); return KErrNone; } @@ -401,7 +392,6 @@ // TInt CSockDescBase::TweakReadyEvents(TInt errval) { - TInt returnEvents = 0; if( errval >= KErrNone ) { @@ -424,16 +414,8 @@ // waitforNrequest only after a event if(GetConnectionProgress()) { - - TInt val = -1; - TInt ret = KErrNone; - ATOMICSOCKETOP(ret = iSocket.GetOpt(KSOSelectLastError, KSOLSocket, val),ret = KErrBadHandle) - (iPollErr = ret) || (iPollErr = val); - - returnEvents |= EReadyForReading; - returnEvents |= EReadyForWriting; - returnEvents |= EAnyException; + returnEvents |= EReadyForWriting; } else { @@ -446,12 +428,7 @@ if( GetConnectionProgress() ) { // Dummy call to retrieve select events also unlocks the socket - const TUint events = GetSelectEvents(); - - TInt val = -1; - TInt ret = KErrNone; - ATOMICSOCKETOP(ret = iSocket.GetOpt(KSOSelectLastError, KSOLSocket, val),ret = KErrBadHandle) - (iPollErr = ret) || (iPollErr = val); + const TUint events = GetSelectEvents(); // set all the events that has been requested for // This handles a scenario where connect fails( in loopback ) // here all the events requested should be ready ready @@ -471,20 +448,18 @@ void CSockDescBase::CancelNotify() { - ATOMICSOCKETOP(iSocket.CancelIoctl(),NOP) + iSocket.CancelIoctl(); iIoctlLock.Signal(); } TInt CSockDescBase::Listen(TUint qSize) - { - TInt ret = KErrNone; - ATOMICSOCKETOP(ret = iSocket.Listen(qSize), return KErrBadHandle) - return ret; + { + return iSocket.Listen(qSize); } void CSockDescBase::ReadCancel() { - ATOMICSOCKETOP(iSocket.CancelRecv(),NOP) + iSocket.CancelRecv(); } TInt CSockDescBase::ReadCompletion(TDes8& /*aBuf*/, TInt aStatus) @@ -498,17 +473,17 @@ void CSockDescBase::RecvFromCancel() { - ATOMICSOCKETOP(iSocket.CancelRecv(),NOP) + iSocket.CancelRecv(); } void CSockDescBase::SendToCancel() { - ATOMICSOCKETOP(iSocket.CancelSend(),NOP) + iSocket.CancelSend(); } void CSockDescBase::WriteCancel() { - ATOMICSOCKETOP(iSocket.CancelWrite(),NOP) + iSocket.CancelWrite(); } TInt CSockDescBase::SockName(int anEnd, TSockAddr& anAddr) @@ -525,9 +500,9 @@ anAddr.SetFamily(KBadFamily); if (anEnd==0) - ATOMICSOCKETOP(iSocket.LocalName(anAddr),NOP) + iSocket.LocalName(anAddr); else - ATOMICSOCKETOP(iSocket.RemoteName(anAddr),NOP) + iSocket.RemoteName(anAddr); if (anAddr.Family()==KBadFamily) return ENOTCONN; // assume that the call failed, but there is no way to find out why return KErrNone; @@ -552,6 +527,6 @@ Complete(aStatus,KErrArgument); // Invalid argument return; } - ATOMICSOCKETOP(iSocket.Shutdown(how,aStatus),Complete(aStatus,KErrBadHandle)) + iSocket.Shutdown(how,aStatus); return; }