MCPcopy
hub / github.com/tinode/chat / initVideoCalls

Function initVideoCalls

server/calls.go:116–172  ·  view source on GitHub ↗
(jsconfig json.RawMessage)

Source from the content-addressed store, hash-verified

114}
115
116func initVideoCalls(jsconfig json.RawMessage) error {
117 var config callConfig
118
119 if len(jsconfig) == 0 {
120 return nil
121 }
122
123 if err := json.Unmarshal([]byte(jsconfig), &config); err != nil {
124 return fmt.Errorf("failed to parse config: %w", err)
125 }
126
127 if !config.Enabled {
128 logs.Info.Println("Video calls disabled")
129 return nil
130 }
131
132 if len(config.ICEServers) > 0 {
133 globals.iceServers = config.ICEServers
134 } else if config.ICEServersFile != "" {
135 var iceConfig []iceServer
136 file, err := os.Open(config.ICEServersFile)
137 if err != nil {
138 return fmt.Errorf("failed to read ICE config: %w", err)
139 }
140
141 jr := jcr.New(file)
142 if err = json.NewDecoder(jr).Decode(&iceConfig); err != nil {
143 switch jerr := err.(type) {
144 case *json.UnmarshalTypeError:
145 lnum, cnum, _ := jr.LineAndChar(jerr.Offset)
146 return fmt.Errorf("unmarshall error in ICE config in %s at %d:%d (offset %d bytes): %w",
147 jerr.Field, lnum, cnum, jerr.Offset, jerr)
148 case *json.SyntaxError:
149 lnum, cnum, _ := jr.LineAndChar(jerr.Offset)
150 return fmt.Errorf("syntax error in config file at %d:%d (offset %d bytes): %w",
151 lnum, cnum, jerr.Offset, jerr)
152 default:
153 return fmt.Errorf("failed to parse config file: %w", err)
154 }
155 }
156 file.Close()
157
158 globals.iceServers = iceConfig
159 }
160
161 if len(globals.iceServers) == 0 {
162 return errors.New("no valid ICE cervers found")
163 }
164
165 globals.callEstablishmentTimeout = config.CallEstablishmentTimeout
166 if globals.callEstablishmentTimeout <= 0 {
167 globals.callEstablishmentTimeout = defaultCallEstablishmentTimeout
168 }
169
170 logs.Info.Println("Video calls enabled with", len(globals.iceServers), "ICE servers")
171 return nil
172}
173

Callers 1

mainFunction · 0.85

Calls 3

PrintlnMethod · 0.80
OpenMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…