Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dnsproxy for openSUSE:Factory checked in at 2024-01-25 18:40:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dnsproxy (Old) and /work/SRC/openSUSE:Factory/.dnsproxy.new.1815 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dnsproxy" Thu Jan 25 18:40:56 2024 rev:20 rq:1141229 version:0.63.1 Changes: -------- --- /work/SRC/openSUSE:Factory/dnsproxy/dnsproxy.changes 2024-01-18 21:54:08.506370572 +0100 +++ /work/SRC/openSUSE:Factory/.dnsproxy.new.1815/dnsproxy.changes 2024-01-25 18:40:59.802210620 +0100 @@ -1,0 +2,6 @@ +Tue Jan 23 23:16:30 UTC 2024 - Eyad Issa <eyadlore...@gmail.com> + +- Update to version 0.63.1: + * Pull request 315: 373 fix goroutines leak + +------------------------------------------------------------------- Old: ---- dnsproxy-0.63.0.obscpio New: ---- dnsproxy-0.63.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dnsproxy.spec ++++++ --- /var/tmp/diff_new_pack.GHGMfr/_old 2024-01-25 18:41:00.770245156 +0100 +++ /var/tmp/diff_new_pack.GHGMfr/_new 2024-01-25 18:41:00.774245299 +0100 @@ -17,7 +17,7 @@ Name: dnsproxy -Version: 0.63.0 +Version: 0.63.1 Release: 0 Summary: A DNS proxy server License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GHGMfr/_old 2024-01-25 18:41:00.806246441 +0100 +++ /var/tmp/diff_new_pack.GHGMfr/_new 2024-01-25 18:41:00.810246583 +0100 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/AdguardTeam/dnsproxy.git</param> - <param name="revision">v0.63.0</param> + <param name="revision">v0.63.1</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionformat">@PARENT_TAG@</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GHGMfr/_old 2024-01-25 18:41:00.830247297 +0100 +++ /var/tmp/diff_new_pack.GHGMfr/_new 2024-01-25 18:41:00.834247440 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/AdguardTeam/dnsproxy.git</param> - <param name="changesrevision">edb394b25c873f5201c60294a60034e25cb08566</param></service></servicedata> + <param name="changesrevision">a2506cdb8217517800f9f935075ffe2236a20cf6</param></service></servicedata> (No newline at EOF) ++++++ dnsproxy-0.63.0.obscpio -> dnsproxy-0.63.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnsproxy-0.63.0/upstream/quic.go new/dnsproxy-0.63.1/upstream/quic.go --- old/dnsproxy-0.63.0/upstream/quic.go 2024-01-16 09:32:06.000000000 +0100 +++ new/dnsproxy-0.63.1/upstream/quic.go 2024-01-23 14:32:32.000000000 +0100 @@ -78,13 +78,13 @@ bytesPool *sync.Pool // quicConfigMu protects quicConfig. - quicConfigMu sync.Mutex + quicConfigMu *sync.Mutex // connMu protects conn. - connMu sync.RWMutex + connMu *sync.Mutex // bytesPoolGuard protects bytesPool. - bytesPoolMu sync.Mutex + bytesPoolMu *sync.Mutex // timeout is the timeout for the upstream connection. timeout time.Duration @@ -118,7 +118,10 @@ VerifyConnection: opts.VerifyConnection, NextProtos: compatProtoDQ, }, - timeout: opts.Timeout, + quicConfigMu: &sync.Mutex{}, + connMu: &sync.Mutex{}, + bytesPoolMu: &sync.Mutex{}, + timeout: opts.Timeout, } runtime.SetFinalizer(u, (*dnsOverQUIC).Close) @@ -159,7 +162,7 @@ // connection was closed (due to inactivity for example) AND the server // refuses to open a 0-RTT connection. for i := 0; hasConnection && p.shouldRetry(err) && i < 2; i++ { - log.Debug("re-creating the QUIC connection and retrying due to %v", err) + log.Debug("dnsproxy: re-creating the QUIC connection and retrying due to %v", err) // Close the active connection to make sure we'll try to re-connect. p.closeConnWithError(err) @@ -214,7 +217,7 @@ var stream quic.Stream stream, err = p.openStream(conn) if err != nil { - return nil, err + return nil, fmt.Errorf("opening stream: %w", err) } _, err = stream.Write(proxyutil.AddPrefix(buf)) @@ -226,7 +229,10 @@ // indicate through the STREAM FIN mechanism that no further data will // be sent on that stream. Note, that stream.Close() closes the // write-direction of the stream, but does not prevent reading from it. - _ = stream.Close() + err = stream.Close() + if err != nil { + log.Debug("dnsproxy: closing quic stream: %s", err) + } return p.readMsg(stream) } @@ -259,29 +265,30 @@ // argument controls whether we should try to use the existing cached // connection. If it is false, we will forcibly create a new connection and // close the existing one if needed. -func (p *dnsOverQUIC) getConnection(useCached bool) (quic.Connection, error) { +func (p *dnsOverQUIC) getConnection(useCached bool) (c quic.Connection, err error) { var conn quic.Connection - p.connMu.RLock() - conn = p.conn - if conn != nil && useCached { - p.connMu.RUnlock() - - return conn, nil - } - if conn != nil { - // we're recreating the connection, let's create a new one. - _ = conn.CloseWithError(QUICCodeNoError, "") - } - p.connMu.RUnlock() p.connMu.Lock() defer p.connMu.Unlock() - var err error + conn = p.conn + if conn != nil { + if useCached { + return conn, nil + } + + // We're recreating the connection, let's create a new one. + err = conn.CloseWithError(QUICCodeNoError, "") + if err != nil { + log.Debug("dnsproxy: closing stale connection: %s", err) + } + } + conn, err = p.openConnection() if err != nil { return nil, err } + p.conn = conn return conn, nil @@ -320,7 +327,9 @@ defer cancel() stream, err := conn.OpenStreamSync(ctx) - if err == nil { + if err != nil { + log.Debug("dnsproxy: opening quic stream: %s", err) + } else { return stream, nil } @@ -330,15 +339,16 @@ if err != nil { return nil, err } + // Open a new stream. return newConn.OpenStreamSync(ctx) } -// openConnection opens a new QUIC connection. +// openConnection dials a new QUIC connection. func (p *dnsOverQUIC) openConnection() (conn quic.Connection, err error) { dialContext, err := p.getDialer() if err != nil { - return nil, fmt.Errorf("failed to bootstrap QUIC connection: %w", err) + return nil, fmt.Errorf("bootstrapping %s: %w", p.addr, err) } // we're using bootstrapped address instead of what's passed to the function @@ -346,14 +356,18 @@ // what IP is actually reachable (when there're v4/v6 addresses). rawConn, err := dialContext(context.Background(), "udp", "") if err != nil { - return nil, fmt.Errorf("failed to open a QUIC connection: %w", err) + return nil, fmt.Errorf("dialing raw connection to %s: %w", p.addr, err) + } + + // It's never actually used. + err = rawConn.Close() + if err != nil { + log.Debug("dnsproxy: closing raw connection for %s: %s", p.addr, err) } - // It's never actually used - _ = rawConn.Close() udpConn, ok := rawConn.(*net.UDPConn) if !ok { - return nil, fmt.Errorf("failed to open connection to %s", p.addr) + return nil, fmt.Errorf("unexpected type %T of connection; should be %T", rawConn, udpConn) } addr := udpConn.RemoteAddr().String() @@ -363,7 +377,7 @@ conn, err = quic.DialAddrEarly(ctx, addr, p.tlsConf.Clone(), p.getQUICConfig()) if err != nil { - return nil, fmt.Errorf("opening quic connection to %s: %w", p.addr, err) + return nil, fmt.Errorf("dialing quic connection to %s: %w", p.addr, err) } return conn, nil @@ -393,7 +407,7 @@ err = p.conn.CloseWithError(code, "") if err != nil { - log.Error("failed to close the conn: %v", err) + log.Error("dnsproxy: failed to close the conn: %v", err) } p.conn = nil } ++++++ dnsproxy.obsinfo ++++++ --- /var/tmp/diff_new_pack.GHGMfr/_old 2024-01-25 18:41:00.994253149 +0100 +++ /var/tmp/diff_new_pack.GHGMfr/_new 2024-01-25 18:41:01.002253434 +0100 @@ -1,5 +1,5 @@ name: dnsproxy -version: 0.63.0 -mtime: 1705393926 -commit: edb394b25c873f5201c60294a60034e25cb08566 +version: 0.63.1 +mtime: 1706016752 +commit: a2506cdb8217517800f9f935075ffe2236a20cf6 ++++++ vendor.tar.zstd ++++++ Binary files /var/tmp/diff_new_pack.GHGMfr/_old and /var/tmp/diff_new_pack.GHGMfr/_new differ