func (udp *Udp) listen(conn *net.UDPConn) { log.Info("Begin listening for UDP on address %s", conn.LocalAddr()) buffer := make([]byte, c_BUFSIZE) for { num, _, err := conn.ReadFromUDP(buffer) if err != nil { if udp.stop { log.Info("Stopped listening for UDP on %s", conn.LocalAddr) break } else { log.Severe("Failed to read from UDP buffer: " + err.Error()) continue } } pkt := append([]byte(nil), buffer[:num]...) go func() { msg, err := parser.ParseMessage(pkt) if err != nil { log.Warn("Failed to parse SIP message: %s", err.Error()) } else { udp.output <- msg } }() } }
func message(rawMsg []string) (base.SipMessage, error) { return parser.ParseMessage([]byte(strings.Join(rawMsg, "\r\n"))) }