Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/netwerk/socket/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  nsISocketProvider.idl   Sprache: unbekannt

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIProxyInfo;
interface nsITLSSocketControl;
[ptr] native PRFileDescStar(struct PRFileDesc);
native OriginAttributes(mozilla::OriginAttributes);
[ref] native const_OriginAttributesRef(const mozilla::OriginAttributes);

%{ C++
#include "mozilla/BasePrincipal.h"
%}

/**
 * nsISocketProvider
 */
[scriptable, uuid(508d5469-9e1e-4a08-b5b0-7cfebba1e51a)]
interface nsISocketProvider : nsISupports
{
    /**
     * newSocket
     *
     * @param aFamily
     *        The address family for this socket (PR_AF_INET or PR_AF_INET6).
     * @param aHost
     *        The origin hostname for this connection.
     * @param aPort
     *        The origin port for this connection.
     * @param aProxyHost
     *        If non-null, the proxy hostname for this connection.
     * @param aProxyPort
     *        The proxy port for this connection.
     * @param aFlags
     *        Control flags that govern this connection (see below.)
     * @param aTlsFlags
     *        An opaque flags for non-standard behavior of the TLS system.
     *        It is unlikely this will need to be set outside of telemetry
     *        studies relating to the TLS implementation.
     * @param aFileDesc
     *        The resulting PRFileDesc.
     * @param aTLSSocketControl
     *        TLS socket control object that should be associated with
     *        aFileDesc, if applicable.
     */
    [noscript]
    void newSocket(in long                      aFamily,
                   in string                    aHost,
                   in long                      aPort,
                   in nsIProxyInfo              aProxy,
                   in const_OriginAttributesRef aOriginAttributes,
                   in unsigned long             aFlags,
                   in unsigned long             aTlsFlags,
                   out PRFileDescStar           aFileDesc,
                   out nsITLSSocketControl      aTLSSocketControl);

    /**
     * addToSocket
     *
     * This function is called to allow the socket provider to layer a
     * PRFileDesc on top of another PRFileDesc.  For example, SSL via a SOCKS
     * proxy.
     *
     * Parameters are the same as newSocket with the exception of aFileDesc,
     * which is an in-param instead.
     */
    [noscript]
    void addToSocket(in long                      aFamily,
                     in string                    aHost,
                     in long                      aPort,
                     in nsIProxyInfo              aProxy,
                     in const_OriginAttributesRef aOriginAttributes,
                     in unsigned long             aFlags,
                     in unsigned long             aTlsFlags,
                     in PRFileDescStar            aFileDesc,
                     out nsITLSSocketControl      aTLSSocketControl);

    /**
     * PROXY_RESOLVES_HOST
     *
     * This flag is set if the proxy is to perform hostname resolution instead
     * of the client.  When set, the hostname parameter passed when in this
     * interface will be used instead of the address structure passed for a
     * later connect et al. request.
     */
    const long PROXY_RESOLVES_HOST = 1 << 0;

    /**
     * When setting this flag, the socket will not apply any
     * credentials when establishing a connection. For example,
     * an SSL connection would not send any client-certificates
     * if this flag is set.
     */
    const long ANONYMOUS_CONNECT = 1 << 1;

    /**
     * If set, indicates that the connection was initiated from a source
     * defined as being private in the sense of Private Browsing. Generally,
     * there should be no state shared between connections that are private
     * and those that are not; it is OK for multiple private connections
     * to share state with each other, and it is OK for multiple non-private
     * connections to share state with each other.
     */
    const unsigned long NO_PERMANENT_STORAGE = 1 << 2;

    /**
     * If set, do not use newer protocol features that might have interop problems
     * on the Internet. Intended only for use with critical infra like the updater.
     * default is false.
     */
    const unsigned long BE_CONSERVATIVE = 1 << 3;

    /**
     * This is used for a temporary workaround for a web-compat issue. The flag is
     * only set on CORS preflight request to allowed sending client certificates
     * on a connection for an anonymous request.
     */
    const long ANONYMOUS_CONNECT_ALLOW_CLIENT_CERT = 1 << 4;

    /**
     * If set, indicates that this is a speculative connection.
     */
    const unsigned long IS_SPECULATIVE_CONNECTION = 1 << 5;

    /**
     * If set, do not send an ECH extension (whether GREASE or 'real').
     * Currently false by default and is set when retrying failed connections.
     */
    const unsigned long DONT_TRY_ECH = (1 << 10);

    /**
     *  If set, indicates that the connection is a retry.
     */
    const unsigned long IS_RETRY = (1 << 11);

    /**
     * If set, indicates that the connection used a privacy-preserving DNS
     * transport such as DoH, DoQ or similar. Currently this field is
     * set only when DoH is used via the TRR.
     */
    const unsigned long USED_PRIVATE_DNS = (1 << 12);
};

[ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ]