From 0f8f668cd3c90cbaef22dfb86e691beea5a1f7ae Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Thu, 7 May 2015 11:13:43 +0200 Subject: [PATCH] trivial-httpd: add option to specify the port I use the trivial httpd server locally. Each time I restart the server, I end up modifying manually the config file for other repos so to point to the correct port. In this way I can just re-use the same port. Signed-off-by: Giuseppe Scrivano --- doc/ostree-trivial-httpd.xml | 8 ++++++++ src/ostree/ot-builtin-trivial-httpd.c | 6 ++++-- tests/test-commit-sign.sh | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/doc/ostree-trivial-httpd.xml b/doc/ostree-trivial-httpd.xml index 1c242727..2b846858 100644 --- a/doc/ostree-trivial-httpd.xml +++ b/doc/ostree-trivial-httpd.xml @@ -90,6 +90,14 @@ Boston, MA 02111-1307, USA. + + , + + + Use the specified TCP port to listen on. + + + diff --git a/src/ostree/ot-builtin-trivial-httpd.c b/src/ostree/ot-builtin-trivial-httpd.c index 11717148..d7701893 100644 --- a/src/ostree/ot-builtin-trivial-httpd.c +++ b/src/ostree/ot-builtin-trivial-httpd.c @@ -35,6 +35,7 @@ static char *opt_port_file = NULL; static gboolean opt_daemonize; static gboolean opt_autoexit; static gboolean opt_force_ranges; +static gint opt_port = 0; typedef struct { GFile *root; @@ -44,6 +45,7 @@ typedef struct { static GOptionEntry options[] = { { "daemonize", 'd', 0, G_OPTION_ARG_NONE, &opt_daemonize, "Fork into background when ready", NULL }, { "autoexit", 0, 0, G_OPTION_ARG_NONE, &opt_autoexit, "Automatically exit when directory is deleted", NULL }, + { "port", 'P', 0, G_OPTION_ARG_INT, &opt_port, "Use the specified TCP port", NULL }, { "port-file", 'p', 0, G_OPTION_ARG_FILENAME, &opt_port_file, "Write port number to PATH (- for standard output)", "PATH" }, { "force-range-requests", 0, 0, G_OPTION_ARG_NONE, &opt_force_ranges, "Force range requests by only serving half of files", NULL }, { NULL } @@ -349,10 +351,10 @@ ostree_builtin_trivial_httpd (int argc, char **argv, GCancellable *cancellable, #if SOUP_CHECK_VERSION(2, 48, 0) server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "ostree-httpd ", NULL); - if (!soup_server_listen_all (server, 0, 0, error)) + if (!soup_server_listen_all (server, opt_port, 0, error)) goto out; #else - server = soup_server_new (SOUP_SERVER_PORT, 0, + server = soup_server_new (SOUP_SERVER_PORT, opt_port, SOUP_SERVER_SERVER_HEADER, "ostree-httpd ", NULL); #endif diff --git a/tests/test-commit-sign.sh b/tests/test-commit-sign.sh index 4d13e1c9..8d673a93 100755 --- a/tests/test-commit-sign.sh +++ b/tests/test-commit-sign.sh @@ -56,8 +56,9 @@ cd ${test_tmpdir} mkdir ${test_tmpdir}/httpd cd httpd ln -s ${test_tmpdir}/ostree-srv ostree -${CMD_PREFIX} ostree trivial-httpd --autoexit --daemonize -p ${test_tmpdir}/httpd-port +${CMD_PREFIX} ostree trivial-httpd --autoexit --daemonize -P 18081 -p ${test_tmpdir}/httpd-port port=$(cat ${test_tmpdir}/httpd-port) +assert_streq $port 18081 echo "http://127.0.0.1:${port}" > ${test_tmpdir}/httpd-address cd ${oldpwd}