mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-26 04:52:00 -08:00
RTMP source: apply read and write timeouts to connection initialization
This commit is contained in:
parent
a1a56ff203
commit
faf8d24dff
4 changed files with 181 additions and 150 deletions
|
|
@ -1,18 +1,44 @@
|
|||
package rtmp
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"net"
|
||||
"net/url"
|
||||
|
||||
"github.com/notedit/rtmp/format/rtmp"
|
||||
)
|
||||
|
||||
// Dial connects to a server in reading mode.
|
||||
func Dial(address string) (*Conn, error) {
|
||||
rconn, nconn, err := rtmp.NewClient().Dial(address, rtmp.PrepareReading)
|
||||
// DialContext connects to a server in reading mode.
|
||||
func DialContext(ctx context.Context, address string) (*Conn, error) {
|
||||
// https://github.com/aler9/rtmp/blob/master/format/rtmp/client.go#L74
|
||||
|
||||
u, err := url.Parse(address)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
host := rtmp.UrlGetHost(u)
|
||||
|
||||
var d net.Dialer
|
||||
nconn, err := d.DialContext(ctx, "tcp", host)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rw := &bufio.ReadWriter{
|
||||
Reader: bufio.NewReaderSize(nconn, 4096),
|
||||
Writer: bufio.NewWriterSize(nconn, 4096),
|
||||
}
|
||||
rconn := rtmp.NewConn(rw)
|
||||
rconn.URL = u
|
||||
|
||||
return &Conn{
|
||||
rconn: rconn,
|
||||
nconn: nconn,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ClientHandshake performs the handshake of a client-side connection.
|
||||
func (c *Conn) ClientHandshake() error {
|
||||
return c.rconn.Prepare(rtmp.StageGotPublishOrPlayCommand, rtmp.PrepareReading)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue