Browse Source

add new arguments --read-timeout and --write-timeout

pull/31/head
aler9 5 years ago
parent
commit
dc52266a70
  1. 2
      README.md
  2. 17
      main.go
  3. 4
      server-client.go
  4. 2
      server-udpl.go

2
README.md

@ -73,6 +73,8 @@ Flags: @@ -73,6 +73,8 @@ Flags:
--rtsp-port=8554 port of the RTSP TCP listener
--rtp-port=8000 port of the RTP UDP listener
--rtcp-port=8001 port of the RTCP UDP listener
--read-timeout=5s timeout for read operations
--write-timeout=5s timeout for write operations
--publish-user="" optional username required to publish
--publish-pass="" optional password required to publish
--pre-script="" optional script to run on client connect

17
main.go

@ -13,11 +13,6 @@ import ( @@ -13,11 +13,6 @@ import (
var Version string = "v0.0.0"
const (
_READ_TIMEOUT = 5 * time.Second
_WRITE_TIMEOUT = 5 * time.Second
)
type trackFlow int
const (
@ -50,6 +45,8 @@ type args struct { @@ -50,6 +45,8 @@ type args struct {
rtspPort int
rtpPort int
rtcpPort int
readTimeout time.Duration
writeTimeout time.Duration
publishUser string
publishPass string
preScript string
@ -77,6 +74,12 @@ func newProgram(args args) (*program, error) { @@ -77,6 +74,12 @@ func newProgram(args args) (*program, error) {
if args.rtcpPort == 0 {
args.rtcpPort = 8001
}
if args.readTimeout == time.Duration(0) {
args.readTimeout = 5 * time.Second
}
if args.writeTimeout == time.Duration(0) {
args.writeTimeout = 5 * time.Second
}
if args.version == true {
fmt.Println("rtsp-simple-server " + Version)
@ -170,6 +173,8 @@ func main() { @@ -170,6 +173,8 @@ func main() {
argRtspPort := kingpin.Flag("rtsp-port", "port of the RTSP TCP listener").Default("8554").Int()
argRtpPort := kingpin.Flag("rtp-port", "port of the RTP UDP listener").Default("8000").Int()
argRtcpPort := kingpin.Flag("rtcp-port", "port of the RTCP UDP listener").Default("8001").Int()
argReadTimeout := kingpin.Flag("read-timeout", "timeout for read operations").Default("5s").Duration()
argWriteTimeout := kingpin.Flag("write-timeout", "timeout for write operations").Default("5s").Duration()
argPublishUser := kingpin.Flag("publish-user", "optional username required to publish").Default("").String()
argPublishPass := kingpin.Flag("publish-pass", "optional password required to publish").Default("").String()
argPreScript := kingpin.Flag("pre-script", "optional script to run on client connect").Default("").String()
@ -183,6 +188,8 @@ func main() { @@ -183,6 +188,8 @@ func main() {
rtspPort: *argRtspPort,
rtpPort: *argRtpPort,
rtcpPort: *argRtcpPort,
readTimeout: *argReadTimeout,
writeTimeout: *argWriteTimeout,
publishUser: *argPublishUser,
publishPass: *argPublishPass,
preScript: *argPreScript,

4
server-client.go

@ -122,8 +122,8 @@ func newServerClient(p *program, nconn net.Conn) *serverClient { @@ -122,8 +122,8 @@ func newServerClient(p *program, nconn net.Conn) *serverClient {
p: p,
conn: gortsplib.NewConnServer(gortsplib.ConnServerConf{
NConn: nconn,
ReadTimeout: _READ_TIMEOUT,
WriteTimeout: _WRITE_TIMEOUT,
ReadTimeout: p.args.readTimeout,
WriteTimeout: p.args.writeTimeout,
}),
state: _CLIENT_STATE_STARTING,
write: make(chan *gortsplib.InterleavedFrame),

2
server-udpl.go

@ -52,7 +52,7 @@ func (l *serverUdpListener) log(format string, args ...interface{}) { @@ -52,7 +52,7 @@ func (l *serverUdpListener) log(format string, args ...interface{}) {
func (l *serverUdpListener) run() {
go func() {
for w := range l.write {
l.nconn.SetWriteDeadline(time.Now().Add(_WRITE_TIMEOUT))
l.nconn.SetWriteDeadline(time.Now().Add(l.p.args.writeTimeout))
l.nconn.WriteTo(w.buf, w.addr)
}
}()

Loading…
Cancel
Save