(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.131 and 1.131.8.1

version 1.131, 2008/12/16 18:56:00 version 1.131.8.1, 2013/06/03 22:35:12
Line 79 
Line 79 
                 reinterpret_cast<struct sockaddr*>(new struct sockaddr_un);                 reinterpret_cast<struct sockaddr*>(new struct sockaddr_un);
             address_size = sizeof(struct sockaddr_un);             address_size = sizeof(struct sockaddr_un);
 #else #else
             PEGASUS_ASSERT(false);              PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
         }         }
 #ifdef PEGASUS_ENABLE_IPV6 #ifdef PEGASUS_ENABLE_IPV6
Line 98 
Line 98 
         }         }
         else         else
         {         {
             PEGASUS_ASSERT(false);              PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
     }     }
     }     }
  
Line 134 
Line 134 
                            Uint16 connectionType,                            Uint16 connectionType,
                            Uint32 portNumber,                            Uint32 portNumber,
                            SSLContext * sslcontext,                            SSLContext * sslcontext,
                            ReadWriteSem* sslContextObjectLock)                             ReadWriteSem* sslContextObjectLock,
                              HostAddress *listenOn)
    : Base(PEGASUS_QUEUENAME_HTTPACCEPTOR),  // ATTN: Need unique names?    : Base(PEGASUS_QUEUENAME_HTTPACCEPTOR),  // ATTN: Need unique names?
      _monitor(monitor),      _monitor(monitor),
      _outputMessageQueue(outputMessageQueue),      _outputMessageQueue(outputMessageQueue),
Line 143 
Line 144 
      _connectionType(connectionType),      _connectionType(connectionType),
      _portNumber(portNumber),      _portNumber(portNumber),
      _sslcontext(sslcontext),      _sslcontext(sslcontext),
      _sslContextObjectLock(sslContextObjectLock)      _sslContextObjectLock(sslContextObjectLock),
       _listenAddress(listenOn)
 { {
    PEGASUS_ASSERT(!_sslcontext == !_sslContextObjectLock);    PEGASUS_ASSERT(!_sslcontext == !_sslContextObjectLock);
    Socket::initializeInterface();    Socket::initializeInterface();
Line 213 
Line 215 
     {     {
         case SOCKET_MESSAGE:         case SOCKET_MESSAGE:
         {         {
             SocketMessage* socketMessage = (SocketMessage*)message;  
   
             // If this is a connection request:             // If this is a connection request:
             PEGASUS_ASSERT(socketMessage->socket == _rep->socket);              PEGASUS_ASSERT(((SocketMessage*)message)->socket == _rep->socket);
  
             PEGASUS_ASSERT(socketMessage->events & SocketMessage::READ);              PEGASUS_ASSERT(
                   ((SocketMessage*)message)->events & SocketMessage::READ);
  
             _acceptConnection();             _acceptConnection();
  
Line 250 
Line 251 
        }        }
  
        default:        default:
            PEGASUS_ASSERT(false);             PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
            break;            break;
     }     }
  
Line 279 
Line 280 
     _bind();     _bind();
 } }
  
   
 /** /**
     _bind - creates a new server socket and bind socket to the port address.     _bind - creates a new server socket and bind socket to the port address.
     If PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET is not defined, the port number is     If PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET is not defined, the port number is
Line 327 
Line 329 
         strcpy(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path,         strcpy(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path,
             PEGASUS_LOCAL_DOMAIN_SOCKET_PATH);             PEGASUS_LOCAL_DOMAIN_SOCKET_PATH);
 #else #else
         PEGASUS_ASSERT(false);          PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
     }     }
 #ifdef PEGASUS_ENABLE_IPV6 #ifdef PEGASUS_ENABLE_IPV6
     else if (_connectionType == IPV6_CONNECTION)     else if (_connectionType == IPV6_CONNECTION)
     {     {
           if(_listenAddress)
           {
               String hostAdd = _listenAddress->getHost();
               CString ip = hostAdd.getCString();
   
               struct sockaddr_in6 in6addr;
               memset(&in6addr, 0, sizeof(sockaddr_in6));
               if(_listenAddress ->isHostAddLinkLocal())
               {
                   HostAddress::convertTextToBinary(AF_INET6,
                   (const char*)ip,
                   &in6addr.sin6_addr);
                   reinterpret_cast<struct sockaddr_in6*>(
                       _rep->address)->sin6_addr = in6addr.sin6_addr;
                   reinterpret_cast<struct sockaddr_in6*>(
                       _rep->address)->sin6_scope_id =
                           _listenAddress->getScopeID();
               }
               else
               {
                   HostAddress::convertTextToBinary(AF_INET6,
                   (const char*)ip,
                   &in6addr.sin6_addr);
                   reinterpret_cast<struct sockaddr_in6*>(
                       _rep->address)->sin6_addr = in6addr.sin6_addr;
               }
           }
           else
           {
         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_addr =         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_addr =
             in6addr_any;             in6addr_any;
           }
         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_family =         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_family =
             AF_INET6;             AF_INET6;
         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_port =         reinterpret_cast<struct sockaddr_in6*>(_rep->address)->sin6_port =
Line 343 
Line 375 
 #endif #endif
     else if(_connectionType == IPV4_CONNECTION)     else if(_connectionType == IPV4_CONNECTION)
     {     {
         reinterpret_cast<struct sockaddr_in*>(_rep->address)->sin_addr.s_addr =          if(_listenAddress)
             INADDR_ANY;          {
               String hostAdd = _listenAddress->getHost();
               CString ip = hostAdd.getCString();
               struct sockaddr_in addrs;
               HostAddress::convertTextToBinary(
                   AF_INET,
                   (const char*)ip,
                   &addrs.sin_addr);
               reinterpret_cast<struct sockaddr_in*>(
                   _rep->address)->sin_addr.s_addr = addrs.sin_addr.s_addr;
           }
           else
           {
               reinterpret_cast<struct sockaddr_in*>(
               _rep->address)->sin_addr.s_addr = INADDR_ANY;
           }
         reinterpret_cast<struct sockaddr_in*>(_rep->address)->sin_family =         reinterpret_cast<struct sockaddr_in*>(_rep->address)->sin_family =
             AF_INET;             AF_INET;
         reinterpret_cast<struct sockaddr_in*>(_rep->address)->sin_port =         reinterpret_cast<struct sockaddr_in*>(_rep->address)->sin_port =
Line 352 
Line 399 
     }     }
     else     else
     {     {
         PEGASUS_ASSERT(false);          PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
     }     }
  
     // Create socket:     // Create socket:
Line 373 
Line 420 
     }     }
     else     else
     {     {
         PEGASUS_ASSERT(false);          PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
     }     }
  
     if (_rep->socket < 0)     if (_rep->socket < 0)
Line 474 
Line 521 
         {         {
             MessageLoaderParms parms(             MessageLoaderParms parms(
                 "Common.HTTPAcceptor.FAILED_SET_LDS_FILE_OPTION",                 "Common.HTTPAcceptor.FAILED_SET_LDS_FILE_OPTION",
                 "Failed to set permission on local domain socket {0}: {1}.",                  "Failed to set permission on local domain socket $0: $1.",
                 PEGASUS_LOCAL_DOMAIN_SOCKET_PATH,                 PEGASUS_LOCAL_DOMAIN_SOCKET_PATH,
                 PEGASUS_SYSTEM_ERRORMSG_NLS );                 PEGASUS_SYSTEM_ERRORMSG_NLS );
  
Line 493 
Line 540 
     {     {
         MessageLoaderParms parms(         MessageLoaderParms parms(
             "Common.HTTPAcceptor.FAILED_LISTEN_SOCKET",             "Common.HTTPAcceptor.FAILED_LISTEN_SOCKET",
             "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 );
  
         delete _rep;         delete _rep;
Line 505 
Line 552 
  
     if (-1 == ( _entry_index = _monitor->solicitSocketMessages(     if (-1 == ( _entry_index = _monitor->solicitSocketMessages(
             _rep->socket,             _rep->socket,
             SocketMessage::READ | SocketMessage::EXCEPTION,  
             getQueueId(),             getQueueId(),
             MonitorEntry::TYPE_ACCEPTOR)))             MonitorEntry::TYPE_ACCEPTOR)))
     {     {
Line 541 
Line 587 
                 "HTTPAcceptor::closeConnectionSocket Unlinking local "                 "HTTPAcceptor::closeConnectionSocket Unlinking local "
                     "connection.");                     "connection.");
             ::unlink(             ::unlink(
                 reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path);                      reinterpret_cast<struct sockaddr_un*>
                           (_rep->address)->sun_path);
 #else #else
             PEGASUS_ASSERT(false);              PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
         }         }
     }     }
Line 590 
Line 637 
                 "HTTPAcceptor::reconnectConnectionSocket Unlinking local "                 "HTTPAcceptor::reconnectConnectionSocket Unlinking local "
                     "connection." );                     "connection." );
             ::unlink(             ::unlink(
                 reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path);                      reinterpret_cast<struct sockaddr_un*>(
                           _rep->address)->sun_path);
 #else #else
             PEGASUS_ASSERT(false);              PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
         }         }
         // open the socket         // open the socket
Line 654 
Line 702 
         {         {
 #ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET #ifndef PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET
             ::unlink(             ::unlink(
                 reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path);                      reinterpret_cast<struct sockaddr_un*>
                       (_rep->address)->sun_path);
 #else #else
             PEGASUS_ASSERT(false);              PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
         }         }
  
Line 714 
Line 763 
             reinterpret_cast<struct sockaddr*>(new struct sockaddr_un);             reinterpret_cast<struct sockaddr*>(new struct sockaddr_un);
         address_size = sizeof(struct sockaddr_un);         address_size = sizeof(struct sockaddr_un);
 #else #else
         PEGASUS_ASSERT(false);          PEGASUS_UNREACHABLE(PEGASUS_ASSERT(false);)
 #endif #endif
     }     }
     else     else
Line 800 
Line 849 
     {     {
 #ifdef PEGASUS_ENABLE_IPV6 #ifdef PEGASUS_ENABLE_IPV6
         char ipBuffer[PEGASUS_INET6_ADDRSTR_LEN];         char ipBuffer[PEGASUS_INET6_ADDRSTR_LEN];
         int rc;          if (System::getNameInfo(accept_address,
         if ((rc = System::getNameInfo(accept_address,  
                 address_size,                 address_size,
                 ipBuffer,                 ipBuffer,
                 PEGASUS_INET6_ADDRSTR_LEN,                 PEGASUS_INET6_ADDRSTR_LEN,
                 0,                 0,
                 0,                 0,
                 NI_NUMERICHOST)))                  NI_NUMERICHOST))
         {         {
             PEG_TRACE((  
                 TRC_DISCARDED_DATA,  
                 Tracer::LEVEL1,  
                 "HTTPAcceptor: getnameinfo() failed.  rc: %d",  
                 rc));  
             delete accept_address;             delete accept_address;
             return;             return;
         }         }
Line 908 
Line 951 
  
     if (-1 ==  (index = _monitor->solicitSocketMessages(     if (-1 ==  (index = _monitor->solicitSocketMessages(
             connection->getSocket(),             connection->getSocket(),
             SocketMessage::READ | SocketMessage::EXCEPTION,  
             connection->getQueueId(), MonitorEntry::TYPE_CONNECTION)) )             connection->getQueueId(), MonitorEntry::TYPE_CONNECTION)) )
     {     {
         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL1,         PEG_TRACE_CSTRING(TRC_DISCARDED_DATA, Tracer::LEVEL1,


Legend:
Removed from v.1.131  
changed lines
  Added in v.1.131.8.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2