Support OS assining random port for given Musique instance
This commit is contained in:
parent
6588363fa3
commit
3183786271
@ -500,7 +500,7 @@ static std::optional<Error> Main(std::span<char const*> args)
|
||||
// FIXME Handle port number parsing errors
|
||||
std::from_chars(port_str.data(), port_str.data() + port_str.size(), port);
|
||||
} else {
|
||||
port = 8081;
|
||||
port = 0;
|
||||
config["net"]["port"] = std::to_string(port);
|
||||
save_new_config = true;
|
||||
}
|
||||
|
@ -20,9 +20,9 @@ bin/$(os)/$(Target): $(Release_Obj) bin/$(os)/main.o bin/$(os)/rtmidi.o $(Bestli
|
||||
|
||||
Debug_Obj=$(addprefix bin/$(os)/debug/,$(Obj))
|
||||
|
||||
bin/$(os)/debug/$(Target): $(Debug_Obj) bin/$(os)/debug/main.o bin/$(os)/rtmidi.o $(Bestline)
|
||||
bin/$(os)/debug/$(Target): $(Debug_Obj) bin/$(os)/debug/main.o bin/$(os)/rtmidi.o $(Bestline) $(Server)
|
||||
@echo "CXX $@"
|
||||
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/$(os)/rtmidi.o $(Bestline) $(LDFLAGS) $(LDLIBS)
|
||||
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/$(os)/rtmidi.o $(Bestline) $(LDFLAGS) $(LDLIBS) bin/$(os)/server/server.o
|
||||
|
||||
bin/$(os)/debug/%.o: musique/%.cc
|
||||
@echo "CXX $@"
|
||||
|
@ -305,7 +305,7 @@ func main() {
|
||||
|
||||
r := router.Router{}
|
||||
registerRoutes(&r)
|
||||
exit, err := r.Run(baseIP, uint16(port))
|
||||
exit, err := r.Run(baseIP, &port)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
@ -25,10 +25,12 @@ func ServerInit(inputNick string, inputPort int) {
|
||||
nick = inputNick
|
||||
port = inputPort
|
||||
|
||||
|
||||
r := router.Router{}
|
||||
registerRoutes(&r)
|
||||
_, err = r.Run(baseIP, uint16(port))
|
||||
_, err = r.Run(baseIP, &port)
|
||||
if err != nil {
|
||||
fmt.Println("Address already in use. You have probably another instance of Musique running")
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ type Route func(incoming net.Conn, request proto.Request) interface{}
|
||||
|
||||
type Router struct {
|
||||
routes map[string]Route
|
||||
port uint16
|
||||
port int
|
||||
baseIP string
|
||||
}
|
||||
|
||||
@ -23,14 +23,19 @@ func (router *Router) Add(name string, route Route) {
|
||||
router.routes[name] = route
|
||||
}
|
||||
|
||||
func (router *Router) Run(ip string, port uint16) (<-chan struct{}, error) {
|
||||
router.port = port
|
||||
func (router *Router) Run(ip string, port *int) (<-chan struct{}, error) {
|
||||
router.port = *port
|
||||
router.baseIP = ip
|
||||
|
||||
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", router.baseIP, router.port))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, actualPort, err := net.SplitHostPort(listener.Addr().String())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fmt.Sscan(actualPort, port)
|
||||
|
||||
exit := make(chan struct{})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user