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.
|
||||
func (client *Client) udpreceiver() {
|
||||
for buf := range client.udprecv {
|
||||
|
||||
// Channel close.
|
||||
if len(buf) == 0 {
|
||||
return
|
||||
|
|
|
|||
40
server.go
40
server.go
|
|
@ -23,7 +23,7 @@ import (
|
|||
const DefaultPort = 64738
|
||||
const UDPPacketSize = 1024
|
||||
|
||||
const CeltCompatBitstream = -2147483638
|
||||
const CeltCompatBitstream = -2147483637
|
||||
|
||||
// Client connection states
|
||||
const (
|
||||
|
|
@ -214,17 +214,31 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
|||
client.Panic(err.String())
|
||||
}
|
||||
|
||||
client.codecs = auth.CeltVersions
|
||||
server.updateCodecVersions()
|
||||
|
||||
client.sendChannelList()
|
||||
client.state = StateClientAuthenticated
|
||||
|
||||
// Add the client to the connected list
|
||||
server.session += 1
|
||||
client.Session = server.session
|
||||
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.
|
||||
host := client.tcpaddr.IP.String()
|
||||
server.hmutex.Lock()
|
||||
|
|
@ -271,12 +285,11 @@ func (server *Server) updateCodecVersions() {
|
|||
var count int
|
||||
|
||||
for _, client := range server.clients {
|
||||
for i := 0; i < len(client.codecs); i++ {
|
||||
codecusers[client.codecs[i]] += 1
|
||||
for _, codec := range client.codecs {
|
||||
codecusers[codec] += 1
|
||||
}
|
||||
}
|
||||
|
||||
// result?
|
||||
for codec, users := range codecusers {
|
||||
if users > count {
|
||||
count = users
|
||||
|
|
@ -423,13 +436,12 @@ func (s *Server) SetupUDP() (err os.Error) {
|
|||
func (s *Server) SendUDP() {
|
||||
for {
|
||||
msg := <-s.udpsend
|
||||
// Encrypted
|
||||
if msg.client != nil {
|
||||
// These are to be crypted...
|
||||
crypted := make([]byte, len(msg.buf)+4)
|
||||
msg.client.crypt.Encrypt(crypted, msg.buf)
|
||||
//s.udpconn.WriteTo(crypted, msg.client.udpaddr)
|
||||
b := make([]byte, 1)
|
||||
s.udpconn.WriteTo(b, msg.client.udpaddr)
|
||||
s.udpconn.WriteTo(crypted, msg.client.udpaddr)
|
||||
// Non-encrypted
|
||||
} else if msg.address != nil {
|
||||
s.udpconn.WriteTo(msg.buf, msg.address)
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue