Skip to content

Allow initial rendering without creating socket #403

@Laudrin

Description

@Laudrin

Thank you for the great tool! 🙂

If I have mapserver (v4.9.1 on Windows 10 64 bit) running for a world I'm playing in at the moment and try letting mapserver do the initial rendering of another world in the background, mapserver tries to create a socket on a fixed address before starting rendering. Of course this fails with an error, as the socket on that address is already open.

panic: listen tcp :8080: bind: Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden.

(Retranslation:) Normally, each socket address (protocol, network address or connection) may only be used once.

This could also happen if there is another program using that socket, so this is not only in case you want to render other worlds while mapserver is active for one world.

mapserver -help gives no help to change the socket address, after checking the world directory, I found the mapserver.json, changed the socket address and got mapserver running in the background. So far, so good, but this is not optimal if you only want to run the initial rendering for a world and have each world on the same socket address when active.

So I would suggest the following improvements for the command line / mapserver arguments:

  • mapserver -initialize: Only does initial rendering without opening a socket and exits after initialization is done.
  • mapserver -temporary:8081: Starts mapserver and uses the given address without writing it to the mapserver.json
  • mapserver -permanent:8081: Starts mapserver and uses the given address and saves it to the mapserver.json, using it as default when starting next time without arguments.
  • Additionally mapserver should check if the socket is already taken and use the next free one. If necessary, this could be suppressed by mapserver -fixed-socket which will tell mapserver to only use the socket given in the config file, exiting with an error like before if it is taken.

Of course the commands are only suggestions. 🙂 What do you think about that?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions