Package: nbd-server
Version: 1:3.2-1.1
Severity: normal
Tags: patch
Dear Maintainer,
While working with nbd-server, I tried to allow the clients to
fetch a list of exports. After including the following in the
generic section of /etc/nbd-server/config:
[generic]
# other lines ...
allowlist
nbd-server refused to start, complaining there were no configured
exports, even though there were:
nass0:root ~ 17 # nbd-server -d
** Message: No configured exports; quitting.
Obviously, the line should read 'allowlist = 1', but It would be
helpful if nbd-server detected the error, and complained about
that instead of (apparently) ignoring the rest of the config file,
and issuing the confusing complaint about no configured exports.
I also tried 'allowlist = yes'. In that case it gives a
descriptive message, although it still confusingly and incorrectly
complains that there are no exports:
nass0:root ~ 14 # nbd-server -d
** (process:3482): WARNING **: Could not parse config file: Could not
parse allowlist in group
generic: Key file contains key 'allowlist' which has a value that cannot be
interpreted.
** Message: No configured exports; quitting.
The cause seems to be that g_key_file_load_from_file fails not only
if the file cannot be found or read, but also if it contains syntax
errors.
I am attaching a patch that fixes the problem: it reports the config file
error, and it no longer also complains that no exports were configured.
With the patch, nbd-server reports:
nass0:root ~ 35 # /tmp/nbd-server -d
** (process:3609): WARNING **: Could not parse config file: Key file
contains line '
allowlist' which is not a key-value pair, group, or comment
Kind regards,
Rogier.
Patch:
----------------------------------------------------------------------------------
--- nbd-3.2/nbd-server.c 2012-07-03 22:54:53.000000000 +0200
+++ nbd-3.2-patch/nbd-server.c 2013-01-24 19:19:04.000000000 +0100
@@ -899,8 +899,7 @@
cfile = g_key_file_new();
retval = g_array_new(FALSE, TRUE, sizeof(SERVER));
if(!g_key_file_load_from_file(cfile, f, G_KEY_FILE_KEEP_COMMENTS |
- G_KEY_FILE_KEEP_TRANSLATIONS, &err)) {
- g_set_error(e, errdomain, CFILE_NOTFOUND, "Could not open
config file %s.", f);
+ G_KEY_FILE_KEEP_TRANSLATIONS, e)) {
g_key_file_free(cfile);
return retval;
}
@@ -2597,6 +2596,7 @@
SERVER *serve;
GArray *servers;
GError *err=NULL;
+ bool error_reported=false;
if (sizeof( struct nbd_request )!=28) {
fprintf(stderr,"Bad size of structure. Alignment problems?\n");
@@ -2640,10 +2640,11 @@
}
if(!servers || !servers->len) {
- if(err && !(err->domain == g_quark_from_string("parse_cfile")
- && err->code == CFILE_NOTFOUND)) {
+ if(err && !(err->domain == G_FILE_ERROR
+ && err->code == G_FILE_ERROR_NOENT)) {
g_warning("Could not parse config file: %s",
err ? err->message : "Unknown error");
+ error_reported=true;
}
}
if(serve) {
@@ -2652,7 +2653,8 @@
}
if((!serve) && (!servers||!servers->len)) {
- g_message("No configured exports; quitting.");
+ if (!error_reported)
+ g_message("No configured exports; quitting.");
exit(EXIT_FAILURE);
}
if (!dontfork)
----------------------------------------------------------------------------------
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (x86_64)
Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages nbd-server depends on:
ii adduser 3.113+nmu3
ii debconf [debconf-2.0] 1.5.46
ii libc6 2.13-37
ii libglib2.0-0 2.33.12+really2.32.4-3
ii ucf 3.0025+nmu3
nbd-server recommends no packages.
nbd-server suggests no packages.
-- debconf information excluded
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]