void initializeHttpConnectionListener()
{
   // alias options
   session::Options& options = session::options();

   if (options.programMode() == kSessionProgramModeDesktop)
   {
      std::string localPeer = core::system::getenv("RS_LOCAL_PEER");
      if (!localPeer.empty())
      {
         FilePath streamPath(localPeer);
         s_pHttpConnectionListener = new LocalStreamHttpConnectionListener(
                                           streamPath,
                                           core::system::UserReadWriteMode,
                                           options.sharedSecret(),
                                           -1);
      }
      else
      {
         s_pHttpConnectionListener = new TcpIpHttpConnectionListener(
                                            options.wwwAddress(),
                                            options.wwwPort(),
                                            options.sharedSecret());
      }
   }
   else // mode == "server"
   {
      if (session::options().standalone())
      {
         s_pHttpConnectionListener = new TcpIpHttpConnectionListener(
                                            options.wwwAddress(),
                                            options.wwwPort(),
                                            ""); // no shared secret
      }
      else
      {
         // create listener based on options
         r_util::SessionContext context = options.sessionContext();
         std::string streamFile = r_util::sessionContextFile(context);
         FilePath localStreamPath = local_streams::streamPath(streamFile);
         s_pHttpConnectionListener = new LocalStreamHttpConnectionListener(
                                          localStreamPath,
                                          core::system::EveryoneReadWriteMode,
                                          "", // no shared secret
                                          options.limitRpcClientUid());
      }
   }
}
inline void removeStreams(const std::string& user)
{
   core::Error error = streamPath(user).removeIfExists();
   if (error)
      LOG_ERROR(error);
}