Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Restore exception compatibility in TcpListener.EndAccept*** by antonfirsov · Pull Request #41745 · dotnet/runtime · GitHub
Skip to content

Restore exception compatibility in TcpListener.EndAccept*** - #41745

Merged
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585
Sep 7, 2020
Merged

Restore exception compatibility in TcpListener.EndAccept***#41745
antonfirsov merged 4 commits into
dotnet:masterfrom
antonfirsov:af/fix-41585

Conversation

@antonfirsov

@antonfirsovantonfirsov commented Sep 2, 2020

Copy link
Copy Markdown
Contributor

#40476 changed EndAcceptSocket and EndAcceptTcpClient to utilize the Task-based Socket.AcceptAsync implementation instead of the APM code path.
This however introduced a breaking change for the exception being thrown when listener.Stop() has been called, closing the underlying socket between the calls to BeginAccept and EndAccept.
According to the old code and the documentation, we should throw ObjectDisposedException here.

Fixes#41585

/cc @geoffkizer

@ghost

ghost commented Sep 2, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@antonfirsovantonfirsov added this to the 5.0.0 milestone Sep 2, 2020
{
return TaskToApm.End<TResult>(asyncResult);
}
catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There could be other cases that cause this exception.

I think we should check explicitly for !_active before changing to ODE. That's what other routines here do.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Anyways, I changed the line to catch (SocketException) when (!_active). Want to be equivalent with the old code.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering what are those other cases?

Possibly there aren't any. But it seems better to explicitly check _active, rather than just assume this is the only way that exception can happen.

@karelzkarelz modified the milestones: 5.0.0, 6.0.0Sep 2, 2020
@antonfirsov

antonfirsov commented Sep 3, 2020

Copy link
Copy Markdown
ContributorAuthor

@karelz if we push this (and #41585) out to 6.0, we probably need to document a breaking change for 5.0, just to undo it later.

@antonfirsovantonfirsov added the tenet-compatibility Incompatibility with previous versions or .NET Framework label Sep 3, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-libraries outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@karelz

Copy link
Copy Markdown
Member

@antonfirsov I didn't suggest any pushing out of 5.0 -- I just used correct milestone for the PR - which is in master and hence goes into 6.0. Once we have it merged, we can start porting it to 5.0 RC2 branch.
We had an email discussion that for 5.0 RC1 is ok to just document it as a known problem.

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurtwfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

OuterLoop failures are unrelated: #41530, #40798, #41606, #41531, #41381

@antonfirsov
antonfirsov merged commit 2fa4e6d into dotnet:masterSep 7, 2020
@antonfirsov

Copy link
Copy Markdown
ContributorAuthor

/backport to release/5.0-rc2

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/243045182

antonfirsov pushed a commit that referenced this pull request Sep 8, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 7, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Nettenet-compatibilityIncompatibility with previous versions or .NET Framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TcpListener regression: SocketException at InputShare app

5 participants

@antonfirsov@karelz@geoffkizer@wfurt@Dotnet-GitSync-Bot