Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix deadlocks caused by invalid connection state #432

Merged
merged 6 commits into from
Apr 30, 2023
Merged

Fix deadlocks caused by invalid connection state #432

merged 6 commits into from
Apr 30, 2023

Conversation

cholland1989
Copy link
Contributor

We are using this library as part of a network probe, where we attempt to make an unauthenticated bind and gather some basic information about a host that appears to be listening on the standard LDAP ports. We found that in some rare cases, the connection may be killed out-of-band or black holed by an intermediary firewall.

In these cases, we identified a couple of deadlocks in the v3.Conn.Close and v3.messageContext.sendResponse methods:

goroutine 2045 [chan receive, 2586 minutes]:
github.com/go-ldap/ldap/v3.(*Conn).Close(0xc00d6c4d00)
	/home/runner/go/pkg/mod/github.com/go-ldap/ldap/v3@v3.4.4/conn.go:270 +0xff
goroutine 11123636 [select, 2589 minutes]:
github.com/go-ldap/ldap/v3.(*messageContext).sendResponse(...)
	/home/runner/go/pkg/mod/github.com/go-ldap/ldap/v3@v3.4.4/conn.go:64

This PR fixes these deadlock conditions by applying the configured timeout in both cases.

Copy link
Member

@cpuschma cpuschma left a comment

Choose a reason for hiding this comment

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

LGTM! Thank you for your PR ❤️

@cpuschma cpuschma merged commit b0d0dcf into go-ldap:master Apr 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants