internal unsafe void AttachToUrlGroup() { CheckDisposed(); // Set the association between request queue and url group. After this, requests for registered urls will // get delivered to this request queue. var info = new HttpApiTypes.HTTP_BINDING_INFO(); info.Flags = HttpApiTypes.HTTP_FLAGS.HTTP_PROPERTY_FLAG_PRESENT; info.RequestQueueHandle = Handle.DangerousGetHandle(); var infoptr = new IntPtr(&info); _urlGroup.SetProperty(HttpApiTypes.HTTP_SERVER_PROPERTY.HttpServerBindingProperty, infoptr, (uint)BindingInfoSize); }
private unsafe void SetUrlGroupSecurity() { if (_urlGroup == null) { // Not started yet. return; } HttpApiTypes.HTTP_SERVER_AUTHENTICATION_INFO authInfo = new HttpApiTypes.HTTP_SERVER_AUTHENTICATION_INFO(); authInfo.Flags = HttpApiTypes.HTTP_FLAGS.HTTP_PROPERTY_FLAG_PRESENT; var authSchemes = (HttpApiTypes.HTTP_AUTH_TYPES)_authSchemes; if (authSchemes != HttpApiTypes.HTTP_AUTH_TYPES.NONE) { authInfo.AuthSchemes = authSchemes; // TODO: // NTLM auth sharing (on by default?) DisableNTLMCredentialCaching // Kerberos auth sharing (off by default?) HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING // Mutual Auth - ReceiveMutualAuth // Digest domain and realm - HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS // Basic realm - HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS IntPtr infoptr = new IntPtr(&authInfo); _urlGroup.SetProperty( HttpApiTypes.HTTP_SERVER_PROPERTY.HttpServerAuthenticationProperty, infoptr, (uint)AuthInfoSize); } }
private unsafe void SetUrlGroupTimeouts(int[] timeouts, uint minSendBytesPerSecond) { if (_urlGroup == null) { // Not started yet return; } var timeoutinfo = new HttpApiTypes.HTTP_TIMEOUT_LIMIT_INFO(); timeoutinfo.Flags = HttpApiTypes.HTTP_FLAGS.HTTP_PROPERTY_FLAG_PRESENT; timeoutinfo.DrainEntityBody = (ushort)timeouts[(int)HttpApiTypes.HTTP_TIMEOUT_TYPE.DrainEntityBody]; timeoutinfo.EntityBody = (ushort)timeouts[(int)HttpApiTypes.HTTP_TIMEOUT_TYPE.EntityBody]; timeoutinfo.RequestQueue = (ushort)timeouts[(int)HttpApiTypes.HTTP_TIMEOUT_TYPE.RequestQueue]; timeoutinfo.IdleConnection = (ushort)timeouts[(int)HttpApiTypes.HTTP_TIMEOUT_TYPE.IdleConnection]; timeoutinfo.HeaderWait = (ushort)timeouts[(int)HttpApiTypes.HTTP_TIMEOUT_TYPE.HeaderWait]; timeoutinfo.MinSendRate = minSendBytesPerSecond; var infoptr = new IntPtr(&timeoutinfo); _urlGroup.SetProperty( HttpApiTypes.HTTP_SERVER_PROPERTY.HttpServerTimeoutsProperty, infoptr, (uint)TimeoutLimitSize); }