[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 37/41] slirp: Improve error handling in slirp_smb
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH 37/41] slirp: Improve error handling in slirp_smb |
Date: |
Wed, 24 Jun 2009 14:42:31 +0200 |
User-agent: |
StGIT/0.14.3 |
Make sure for invocations from the monitor that slirp_smb properly
reports errors and doesn't terminate qemu.
Signed-off-by: Jan Kiszka <address@hidden>
---
net.c | 22 ++++++++++++----------
1 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/net.c b/net.c
index edf7ca6..22b7080 100644
--- a/net.c
+++ b/net.c
@@ -697,7 +697,7 @@ static void slirp_guestfwd(SlirpState *s, Monitor *mon,
const char *config_str,
#ifndef _WIN32
static const char *legacy_smb_export;
-static void slirp_smb(SlirpState *s, const char *exported_dir,
+static void slirp_smb(SlirpState *s, Monitor *mon, const char *exported_dir,
struct in_addr vserver_addr);
#endif
@@ -864,7 +864,7 @@ static int net_slirp_init(Monitor *mon, VLANState *vlan,
const char *model,
smb_export = legacy_smb_export;
}
if (smb_export) {
- slirp_smb(s, smb_export, smbsrv);
+ slirp_smb(s, mon, smb_export, smbsrv);
}
#endif
@@ -1023,7 +1023,7 @@ static void smb_exit(void)
system(cmd);
}
-static void slirp_smb(SlirpState* s, const char *exported_dir,
+static void slirp_smb(SlirpState* s, Monitor *mon, const char *exported_dir,
struct in_addr vserver_addr)
{
char smb_conf[1024];
@@ -1033,15 +1033,17 @@ static void slirp_smb(SlirpState* s, const char
*exported_dir,
/* XXX: better tmp dir construction */
snprintf(smb_dir, sizeof(smb_dir), "/tmp/qemu-smb.%ld", (long)getpid());
if (mkdir(smb_dir, 0700) < 0) {
- fprintf(stderr, "qemu: could not create samba server dir '%s'\n",
smb_dir);
- exit(1);
+ config_error(mon, "could not create samba server dir '%s'\n", smb_dir);
+ return;
}
snprintf(smb_conf, sizeof(smb_conf), "%s/%s", smb_dir, "smb.conf");
f = fopen(smb_conf, "w");
if (!f) {
- fprintf(stderr, "qemu: could not create samba server configuration
file '%s'\n", smb_conf);
- exit(1);
+ smb_exit();
+ config_error(mon, "could not create samba server "
+ "configuration file '%s'\n", smb_conf);
+ return;
}
fprintf(f,
"[global]\n"
@@ -1071,8 +1073,7 @@ static void slirp_smb(SlirpState* s, const char
*exported_dir,
SMBD_COMMAND, smb_conf);
if (slirp_add_exec(s->slirp, 0, smb_cmdline, vserver_addr, 139) < 0) {
- fprintf(stderr, "conflicting/invalid smbserver address\n");
- exit(1);
+ config_error(mon, "conflicting/invalid smbserver address\n");
}
}
@@ -1087,7 +1088,8 @@ void net_slirp_smb(const char *exported_dir)
}
legacy_smb_export = exported_dir;
if (!TAILQ_EMPTY(&slirp_stacks)) {
- slirp_smb(TAILQ_FIRST(&slirp_stacks), exported_dir, vserver_addr);
+ slirp_smb(TAILQ_FIRST(&slirp_stacks), NULL, exported_dir,
+ vserver_addr);
}
}
- [Qemu-devel] [PATCH 28/41] slirp: Drop redundant checks from slirp_output, (continued)
- [Qemu-devel] [PATCH 28/41] slirp: Drop redundant checks from slirp_output, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 36/41] slirp: Use shell to erase smb directory, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 35/41] slirp: Save/restore bootp client states, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 32/41] slirp: Use internal state in interface, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 33/41] slirp: Allocate/free stack instance dynamically, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 31/41] slirp: Factor out internal state structure, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 34/41] slirp: Enable multiple instances, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 41/41] slirp: Basic VLAN client info_str, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 39/41] net: Provide VLAN client lookup helper, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 40/41] slirp: Make hostfwd_add/remove multi-instance-aware, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 37/41] slirp: Improve error handling in slirp_smb,
Jan Kiszka <=
- [Qemu-devel] [PATCH 38/41] slirp: Enable multi-instance support for the smb service, Jan Kiszka, 2009/06/24
- [Qemu-devel] Re: [PATCH 00/41] Slirp Fixes and Enhancements - Reloaded, Anthony Liguori, 2009/06/24
- [Qemu-devel] [PATCH 30/41] slirp: Drop link_up checks from if_output and slirp_socket_can_recv, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 22/41] slirp: tftp: Refactor tftp_handle_rrq, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 05/41] slirp: Move smb, redir, tftp and bootp parameters and -net channel, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 16/41] slirp: Drop dead code, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 14/41] slirp: Mark sockets of incoming TCP connections, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 04/41] Introduce get_next_param_value, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 18/41] slirp: Cleanup and basic reanimation of debug code, Jan Kiszka, 2009/06/24
- [Qemu-devel] [PATCH 06/41] slirp: Rework internal configuration, Jan Kiszka, 2009/06/24