mirror of
https://github.com/m13253/dns-over-https.git
synced 2026-03-31 20:35:41 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
627e2d639d | ||
|
|
7d5cf98d2b |
@@ -4,6 +4,10 @@ This Changelog records major changes between versions.
|
|||||||
|
|
||||||
Not all changes are recorded. Please check git log for details.
|
Not all changes are recorded. Please check git log for details.
|
||||||
|
|
||||||
|
## Version 1.3.1
|
||||||
|
|
||||||
|
- Fix the "address already in use" issue
|
||||||
|
|
||||||
## Version 1.3.0
|
## Version 1.3.0
|
||||||
|
|
||||||
- Breaking change: Add client / server support for multiple listen address
|
- Breaking change: Add client / server support for multiple listen address
|
||||||
|
|||||||
@@ -154,24 +154,24 @@ func (c *Client) newHTTPClient() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) Start() error {
|
func (c *Client) Start() error {
|
||||||
result := make(chan error, len(c.udpServers)+len(c.tcpServers))
|
results := make(chan error, len(c.udpServers)+len(c.tcpServers))
|
||||||
for _, srv := range append(c.udpServers, c.tcpServers...) {
|
for _, srv := range append(c.udpServers, c.tcpServers...) {
|
||||||
go func(srv *dns.Server) {
|
go func(srv *dns.Server) {
|
||||||
err := srv.ListenAndServe()
|
err := srv.ListenAndServe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
result <- err
|
results <- err
|
||||||
}(srv)
|
}(srv)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < cap(result); i++ {
|
for i := 0; i < cap(results); i++ {
|
||||||
err := <-result
|
err := <-results
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(result)
|
close(results)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,8 +43,5 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
server := NewServer(conf)
|
server := NewServer(conf)
|
||||||
err = server.Start()
|
_ = server.Start()
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,26 +75,29 @@ func (s *Server) Start() error {
|
|||||||
if s.conf.Verbose {
|
if s.conf.Verbose {
|
||||||
servemux = handlers.CombinedLoggingHandler(os.Stdout, servemux)
|
servemux = handlers.CombinedLoggingHandler(os.Stdout, servemux)
|
||||||
}
|
}
|
||||||
listeners := make(chan error, len(s.conf.Listen))
|
results := make(chan error, len(s.conf.Listen))
|
||||||
for _, addr := range s.conf.Listen {
|
for _, addr := range s.conf.Listen {
|
||||||
if s.conf.Cert != "" || s.conf.Key != "" {
|
go func(addr string) {
|
||||||
go func() {
|
var err error
|
||||||
listeners <- http.ListenAndServeTLS(addr, s.conf.Cert, s.conf.Key, servemux)
|
if s.conf.Cert != "" || s.conf.Key != "" {
|
||||||
}()
|
err = http.ListenAndServeTLS(addr, s.conf.Cert, s.conf.Key, servemux)
|
||||||
continue
|
} else {
|
||||||
}
|
err = http.ListenAndServe(addr, servemux)
|
||||||
go func() {
|
}
|
||||||
listeners <- http.ListenAndServe(addr, servemux)
|
if err != nil {
|
||||||
}()
|
log.Println(err)
|
||||||
|
}
|
||||||
|
results <- err
|
||||||
|
}(addr)
|
||||||
}
|
}
|
||||||
// wait for all handlers
|
// wait for all handlers
|
||||||
for i := 0; i < cap(listeners); i++ {
|
for i := 0; i < cap(results); i++ {
|
||||||
err := <-listeners
|
err := <-results
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(listeners)
|
close(results)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user