icecat: add release icecat-140.10.1-1gnu1 for ecne
This commit is contained in:
parent
a5f93cb214
commit
ff85d7c623
1256 changed files with 63469 additions and 24141 deletions
|
|
@ -711,9 +711,26 @@ void nsNetworkLinkService::NetworkConfigChanged(SCDynamicStoreRef aStoreREf,
|
|||
|
||||
bool ipConfigChanged = false;
|
||||
bool dnsConfigChanged = false;
|
||||
bool skipOnIPConfigChanged = false;
|
||||
for (CFIndex i = 0; i < CFArrayGetCount(aChangedKeys); ++i) {
|
||||
CFStringRef key =
|
||||
static_cast<CFStringRef>(CFArrayGetValueAtIndex(aChangedKeys, i));
|
||||
// Don't call OnIPConfigChanged() if aChangedKeys contains any EAPOL
|
||||
// notifications. This works around a crash bug deep in macOS system
|
||||
// code. Our observers should still get reachability notifications, so
|
||||
// this shouldn't interfere with network functionality.
|
||||
if (CFStringHasSuffix(key, CFSTR("EAPOL"))) {
|
||||
CFIndex keyMaxLength =
|
||||
CFStringGetMaximumSizeForEncoding(CFStringGetLength(key),
|
||||
kCFStringEncodingUTF8) +
|
||||
1;
|
||||
char* keyBuffer = static_cast<char*>(moz_xmalloc(keyMaxLength));
|
||||
keyBuffer[0] = 0;
|
||||
CFStringGetCString(key, keyBuffer, keyMaxLength, kCFStringEncodingUTF8);
|
||||
LOG(("Skipping OnIPConfigChanged() on changed key %s", keyBuffer));
|
||||
free(keyBuffer);
|
||||
skipOnIPConfigChanged = true;
|
||||
}
|
||||
if (CFStringHasSuffix(key, kSCEntNetIPv4) ||
|
||||
CFStringHasSuffix(key, kSCEntNetIPv6)) {
|
||||
ipConfigChanged = true;
|
||||
|
|
@ -724,7 +741,7 @@ void nsNetworkLinkService::NetworkConfigChanged(SCDynamicStoreRef aStoreREf,
|
|||
}
|
||||
|
||||
nsNetworkLinkService* service = static_cast<nsNetworkLinkService*>(aInfo);
|
||||
if (ipConfigChanged) {
|
||||
if (ipConfigChanged && !skipOnIPConfigChanged) {
|
||||
service->OnIPConfigChanged();
|
||||
}
|
||||
|
||||
|
|
@ -803,7 +820,8 @@ nsresult nsNetworkLinkService::Init(void) {
|
|||
::SCDynamicStoreCreate(nullptr, CFSTR("IPAndDNSChangeCallbackSCF"),
|
||||
NetworkConfigChanged, &storeContext);
|
||||
|
||||
CFStringRef patterns[4] = {nullptr, nullptr, nullptr, nullptr};
|
||||
CFStringRef patterns[6] = {nullptr, nullptr, nullptr,
|
||||
nullptr, nullptr, nullptr};
|
||||
OSStatus err = getErrorCodePtr(mStoreRef);
|
||||
if (err == noErr) {
|
||||
// This pattern is "State:/Network/Service/[^/]+/IPv4".
|
||||
|
|
@ -818,7 +836,16 @@ nsresult nsNetworkLinkService::Init(void) {
|
|||
// This pattern is "Setup:/Network/Service/[^/]+/DNS".
|
||||
patterns[3] = ::SCDynamicStoreKeyCreateNetworkServiceEntity(
|
||||
nullptr, kSCDynamicStoreDomainSetup, kSCCompAnyRegex, kSCEntNetDNS);
|
||||
if (!patterns[0] || !patterns[1] || !patterns[2] || !patterns[3]) {
|
||||
// We want to be able to ignore some groups of notifications that contain
|
||||
// "EAPOL" keys. This works around a crash bug deep in macOS system code.
|
||||
// This pattern is "State:/Network/Service/[^/]+/EAPOL".
|
||||
patterns[4] = ::SCDynamicStoreKeyCreateNetworkServiceEntity(
|
||||
nullptr, kSCDynamicStoreDomainState, kSCCompAnyRegex, CFSTR("EAPOL"));
|
||||
// This pattern is "State:/Network/Interface/[^/]+/EAPOL".
|
||||
patterns[5] = ::SCDynamicStoreKeyCreateNetworkInterfaceEntity(
|
||||
nullptr, kSCDynamicStoreDomainState, kSCCompAnyRegex, CFSTR("EAPOL"));
|
||||
if (!patterns[0] || !patterns[1] || !patterns[2] || !patterns[3] ||
|
||||
!patterns[4] || !patterns[5]) {
|
||||
err = -1;
|
||||
}
|
||||
}
|
||||
|
|
@ -829,7 +856,7 @@ nsresult nsNetworkLinkService::Init(void) {
|
|||
// that match that pattern list, then create our run loop
|
||||
// source.
|
||||
if (err == noErr) {
|
||||
patternList = ::CFArrayCreate(nullptr, (const void**)patterns, 4,
|
||||
patternList = ::CFArrayCreate(nullptr, (const void**)patterns, 6,
|
||||
&kCFTypeArrayCallBacks);
|
||||
if (!patternList) {
|
||||
err = -1;
|
||||
|
|
@ -849,6 +876,8 @@ nsresult nsNetworkLinkService::Init(void) {
|
|||
CFReleaseSafe(patterns[1]);
|
||||
CFReleaseSafe(patterns[2]);
|
||||
CFReleaseSafe(patterns[3]);
|
||||
CFReleaseSafe(patterns[4]);
|
||||
CFReleaseSafe(patterns[5]);
|
||||
CFReleaseSafe(patternList);
|
||||
|
||||
if (err != noErr) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue