mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-19 21:59:59 -08:00
Fix voice send/recv.
This commit is contained in:
parent
0bf84fb3f3
commit
d7dd29b45c
2 changed files with 26 additions and 15 deletions
|
|
@ -108,7 +108,6 @@ func (c *Client) sendProtoMessage(kind uint16, msg interface{}) (err os.Error) {
|
||||||
// UDP receiver.
|
// UDP receiver.
|
||||||
func (client *Client) udpreceiver() {
|
func (client *Client) udpreceiver() {
|
||||||
for buf := range client.udprecv {
|
for buf := range client.udprecv {
|
||||||
|
|
||||||
// Channel close.
|
// Channel close.
|
||||||
if len(buf) == 0 {
|
if len(buf) == 0 {
|
||||||
return
|
return
|
||||||
|
|
|
||||||
40
server.go
40
server.go
|
|
@ -23,7 +23,7 @@ import (
|
||||||
const DefaultPort = 64738
|
const DefaultPort = 64738
|
||||||
const UDPPacketSize = 1024
|
const UDPPacketSize = 1024
|
||||||
|
|
||||||
const CeltCompatBitstream = -2147483638
|
const CeltCompatBitstream = -2147483637
|
||||||
|
|
||||||
// Client connection states
|
// Client connection states
|
||||||
const (
|
const (
|
||||||
|
|
@ -214,17 +214,31 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
||||||
client.Panic(err.String())
|
client.Panic(err.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
client.codecs = auth.CeltVersions
|
|
||||||
server.updateCodecVersions()
|
|
||||||
|
|
||||||
client.sendChannelList()
|
|
||||||
client.state = StateClientAuthenticated
|
|
||||||
|
|
||||||
// Add the client to the connected list
|
// Add the client to the connected list
|
||||||
server.session += 1
|
server.session += 1
|
||||||
client.Session = server.session
|
client.Session = server.session
|
||||||
server.clients[client.Session] = client
|
server.clients[client.Session] = client
|
||||||
|
|
||||||
|
// Add codecs
|
||||||
|
client.codecs = auth.CeltVersions
|
||||||
|
if len(client.codecs) == 0 {
|
||||||
|
log.Printf("Client %i connected without CELT codecs.", client.Session)
|
||||||
|
}
|
||||||
|
server.updateCodecVersions()
|
||||||
|
|
||||||
|
err = client.sendProtoMessage(MessageCodecVersion, &mumbleproto.CodecVersion{
|
||||||
|
Alpha: proto.Int32(server.AlphaCodec),
|
||||||
|
Beta: proto.Int32(server.BetaCodec),
|
||||||
|
PreferAlpha: proto.Bool(server.PreferAlphaCodec),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
client.Panic(err.String())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
client.sendChannelList()
|
||||||
|
client.state = StateClientAuthenticated
|
||||||
|
|
||||||
// Add the client to the host slice for its host address.
|
// Add the client to the host slice for its host address.
|
||||||
host := client.tcpaddr.IP.String()
|
host := client.tcpaddr.IP.String()
|
||||||
server.hmutex.Lock()
|
server.hmutex.Lock()
|
||||||
|
|
@ -271,12 +285,11 @@ func (server *Server) updateCodecVersions() {
|
||||||
var count int
|
var count int
|
||||||
|
|
||||||
for _, client := range server.clients {
|
for _, client := range server.clients {
|
||||||
for i := 0; i < len(client.codecs); i++ {
|
for _, codec := range client.codecs {
|
||||||
codecusers[client.codecs[i]] += 1
|
codecusers[codec] += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// result?
|
|
||||||
for codec, users := range codecusers {
|
for codec, users := range codecusers {
|
||||||
if users > count {
|
if users > count {
|
||||||
count = users
|
count = users
|
||||||
|
|
@ -423,13 +436,12 @@ func (s *Server) SetupUDP() (err os.Error) {
|
||||||
func (s *Server) SendUDP() {
|
func (s *Server) SendUDP() {
|
||||||
for {
|
for {
|
||||||
msg := <-s.udpsend
|
msg := <-s.udpsend
|
||||||
|
// Encrypted
|
||||||
if msg.client != nil {
|
if msg.client != nil {
|
||||||
// These are to be crypted...
|
|
||||||
crypted := make([]byte, len(msg.buf)+4)
|
crypted := make([]byte, len(msg.buf)+4)
|
||||||
msg.client.crypt.Encrypt(crypted, msg.buf)
|
msg.client.crypt.Encrypt(crypted, msg.buf)
|
||||||
//s.udpconn.WriteTo(crypted, msg.client.udpaddr)
|
s.udpconn.WriteTo(crypted, msg.client.udpaddr)
|
||||||
b := make([]byte, 1)
|
// Non-encrypted
|
||||||
s.udpconn.WriteTo(b, msg.client.udpaddr)
|
|
||||||
} else if msg.address != nil {
|
} else if msg.address != nil {
|
||||||
s.udpconn.WriteTo(msg.buf, msg.address)
|
s.udpconn.WriteTo(msg.buf, msg.address)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue