(file) Return to HTTPAcceptor.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/HTTPAcceptor.cpp between version 1.115 and 1.116

version 1.115, 2008/02/11 11:56:05 version 1.116, 2008/02/26 19:15:05
Line 99 
Line 99 
  
     ~HTTPAcceptorRep()     ~HTTPAcceptorRep()
     {     {
           closeSocket();
         delete address;         delete address;
     }     }
   
       void closeSocket()
       {
           Socket::close(socket);
       }
   
     struct sockaddr* address;     struct sockaddr* address;
  
     SocketLength address_size;     SocketLength address_size;
Line 426 
Line 433 
     if (setsockopt(_rep->socket, SOL_SOCKET, SO_REUSEADDR,     if (setsockopt(_rep->socket, SOL_SOCKET, SO_REUSEADDR,
             (char *)&opt, sizeof(opt)) < 0)             (char *)&opt, sizeof(opt)) < 0)
     {     {
         Socket::close(_rep->socket);  
         delete _rep;         delete _rep;
         _rep = 0;         _rep = 0;
         MessageLoaderParms parms("Common.HTTPAcceptor.FAILED_SET_SOCKET_OPTION",         MessageLoaderParms parms("Common.HTTPAcceptor.FAILED_SET_SOCKET_OPTION",
Line 447 
Line 453 
             "Failed to bind socket on port $0: $1.",             "Failed to bind socket on port $0: $1.",
             _portNumber, PEGASUS_SYSTEM_NETWORK_ERRORMSG_NLS);             _portNumber, PEGASUS_SYSTEM_NETWORK_ERRORMSG_NLS);
  
         Socket::close(_rep->socket);  
         delete _rep;         delete _rep;
         _rep = 0;         _rep = 0;
         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
Line 491 
Line 496 
                 PEGASUS_LOCAL_DOMAIN_SOCKET_PATH,                 PEGASUS_LOCAL_DOMAIN_SOCKET_PATH,
                 PEGASUS_SYSTEM_ERRORMSG_NLS );                 PEGASUS_SYSTEM_ERRORMSG_NLS );
  
             Socket::close(_rep->socket);  
             delete _rep;             delete _rep;
             _rep = 0;             _rep = 0;
             PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,             PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
Line 513 
Line 517 
             "Failed to listen on socket {0}: {1}.",             "Failed to listen on socket {0}: {1}.",
             (int)_rep->socket,PEGASUS_SYSTEM_NETWORK_ERRORMSG_NLS );             (int)_rep->socket,PEGASUS_SYSTEM_NETWORK_ERRORMSG_NLS );
  
         Socket::close(_rep->socket);  
         delete _rep;         delete _rep;
         _rep = 0;         _rep = 0;
         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
Line 529 
Line 532 
             getQueueId(),             getQueueId(),
             MonitorEntry::TYPE_ACCEPTOR)))             MonitorEntry::TYPE_ACCEPTOR)))
     {     {
         Socket::close(_rep->socket);  
         delete _rep;         delete _rep;
         _rep = 0;         _rep = 0;
         MessageLoaderParms parms(         MessageLoaderParms parms(
Line 555 
Line 557 
         //_monitor->unsolicitSocketMessages(_rep->socket);         //_monitor->unsolicitSocketMessages(_rep->socket);
  
         // close the socket         // close the socket
         Socket::close(_rep->socket);          _rep->closeSocket();
         // Unlink Local Domain Socket Bug# 3312         // Unlink Local Domain Socket Bug# 3312
         if (_connectionType == LOCAL_CONNECTION)         if (_connectionType == LOCAL_CONNECTION)
         {         {
Line 604 
Line 606 
         // unregister the socket         // unregister the socket
         _monitor->unsolicitSocketMessages(_rep->socket);         _monitor->unsolicitSocketMessages(_rep->socket);
         // close the socket         // close the socket
         Socket::close(_rep->socket);          _rep->closeSocket();
         // Unlink Local Domain Socket Bug# 3312          // Unlink Local Domain Socket
         if (_connectionType == LOCAL_CONNECTION)         if (_connectionType == LOCAL_CONNECTION)
         {         {
 #ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET #ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET
Line 673 
Line 675 
     if (_rep)     if (_rep)
     {     {
         _portNumber = 0;         _portNumber = 0;
         Socket::close(_rep->socket);          _rep->closeSocket();
  
         if (_connectionType == LOCAL_CONNECTION)         if (_connectionType == LOCAL_CONNECTION)
         {         {
Line 791 
Line 793 
             "HTTPAcceptor: accept() failed");             "HTTPAcceptor: accept() failed");
         return;         return;
     }     }
   
       // Use an AutoPtr to ensure the socket handle is closed on exception
       AutoPtr<SocketHandle, CloseSocketHandle> socketPtr(&socket);
   
 #ifndef PEGASUS_OS_TYPE_WINDOWS #ifndef PEGASUS_OS_TYPE_WINDOWS
     // We need to ensure that the socket number is not higher than     // We need to ensure that the socket number is not higher than
     // what fits into FD_SETSIZE, because we else won't be able to select on it     // what fits into FD_SETSIZE, because we else won't be able to select on it
Line 810 
Line 816 
              "accept() returned too large socket number %d.",              "accept() returned too large socket number %d.",
              socket));              socket));
  
         // close the connection  
         Socket::close(socket);  
         return;         return;
     }     }
 #endif #endif
Line 841 
Line 845 
             PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,             PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
                 "HTTPAcceptor: getnameinfo() failed");                 "HTTPAcceptor: getnameinfo() failed");
             delete accept_address;             delete accept_address;
             Socket::close(socket);  
             return;             return;
         }         }
         ipAddress = ipBuffer;         ipAddress = ipBuffer;
Line 882 
Line 885 
  
     SharedPtr<MP_Socket> mp_socket(new MP_Socket(     SharedPtr<MP_Socket> mp_socket(new MP_Socket(
         socket, _sslcontext, _sslContextObjectLock, ipAddress));         socket, _sslcontext, _sslContextObjectLock, ipAddress));
       // mp_socket now has responsibility for closing the socket handle
       socketPtr.release();
  
     mp_socket->disableBlocking();     mp_socket->disableBlocking();
     mp_socket->setSocketWriteTimeout(_socketWriteTimeout);     mp_socket->setSocketWriteTimeout(_socketWriteTimeout);
Line 894 
Line 899 
     {     {
         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
             "HTTPAcceptor: SSL_accept() failed");             "HTTPAcceptor: SSL_accept() failed");
         mp_socket->close();  
         return;         return;
     }     }
  
     // Create a new connection and add it to the connection list:     // Create a new connection and add it to the connection list:
  
     HTTPConnection* connection = new HTTPConnection(_monitor, mp_socket,      AutoPtr<HTTPConnection> connection(new HTTPConnection(
         ipAddress, this, static_cast<MessageQueue *>(_outputMessageQueue));          _monitor,
           mp_socket,
           ipAddress,
           this,
           static_cast<MessageQueue *>(_outputMessageQueue)));
  
     if (_idleConnectionTimeoutSeconds)     if (_idleConnectionTimeoutSeconds)
     {     {
Line 926 
Line 934 
             SocketMessage::READ | SocketMessage::EXCEPTION,             SocketMessage::READ | SocketMessage::EXCEPTION,
             connection->getQueueId(), MonitorEntry::TYPE_CONNECTION)) )             connection->getQueueId(), MonitorEntry::TYPE_CONNECTION)) )
     {     {
         // ATTN-DE-P2-2003100503::TODO::Need to enhance code to return  
         // an error message to Client application.  
         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL2,
             "HTTPAcceptor::_acceptConnection: Attempt to allocate entry in "             "HTTPAcceptor::_acceptConnection: Attempt to allocate entry in "
                 "_entries table failed.");                 "_entries table failed.");
         delete connection;  
         Socket::close(socket);  
         return;         return;
     }     }
  
     // Save the socket for cleanup later:  
     connection->_entry_index = index;     connection->_entry_index = index;
     AutoMutex autoMut(_rep->_connection_mut);     AutoMutex autoMut(_rep->_connection_mut);
     _rep->connections.append(connection);      _rep->connections.append(connection.get());
       connection.release();
 } }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.115  
changed lines
  Added in v.1.116

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2