mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-16 12:22:17 +01:00
feat: add more PDF formats, drastically improve LibreOffice long-running instance management
This commit is contained in:
31
pkg/modules/libreoffice/uno/freeport.go
Normal file
31
pkg/modules/libreoffice/uno/freeport.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package uno
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func freePort(logger *zap.Logger) (int, error) {
|
||||
netListener, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("listen on the local network address: %w", err)
|
||||
}
|
||||
defer func() {
|
||||
err := netListener.Close()
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("close network listener: %s", err.Error()))
|
||||
}
|
||||
}()
|
||||
|
||||
addr := netListener.Addr().String()
|
||||
|
||||
_, portStr, err := net.SplitHostPort(addr)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("get free port from host: %w", err)
|
||||
}
|
||||
|
||||
return strconv.Atoi(portStr)
|
||||
}
|
||||
Reference in New Issue
Block a user