X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fafp_config.c;h=291148c3458eeeca77432d751f5813128620d198;hb=465246e257d9aff9855e3e35d8fd5983db932b45;hp=cb836b81a7a19e7a760fbc1e77df1bf3cf077bf4;hpb=e2b3be108f5d8757324c98d63df42b0c11835f82;p=netatalk.git diff --git a/etc/afpd/afp_config.c b/etc/afpd/afp_config.c index cb836b81..291148c3 100644 --- a/etc/afpd/afp_config.c +++ b/etc/afpd/afp_config.c @@ -11,33 +11,19 @@ #include #include #include - -/* STDC check */ -#if STDC_HEADERS #include -#else /* STDC_HEADERS */ -#ifndef HAVE_STRCHR -#define strchr index -#define strrchr index -#endif /* HAVE_STRCHR */ -char *strchr (), *strrchr (); -#ifndef HAVE_MEMCPY -#define memcpy(d,s,n) bcopy ((s), (d), (n)) -#define memmove(d,s,n) bcopy ((s), (d), (n)) -#endif /* ! HAVE_MEMCPY */ -#endif /* STDC_HEADERS */ - -#ifdef HAVE_UNISTD_H #include -#endif /* HAVE_UNISTD_H */ #include -#include -#include - #include #include #include +#ifdef USE_SRVLOC +#include +#endif /* USE_SRVLOC */ + +#include +#include #include #include #include @@ -45,14 +31,12 @@ char *strchr (), *strrchr (); #include #include #include -#ifdef USE_SRVLOC -#include -#endif /* USE_SRVLOC */ -#ifdef HAVE_ACLS + +#ifdef HAVE_LDAP #include #endif -#include "globals.h" +#include #include "afp_config.h" #include "uam_auth.h" #include "status.h" @@ -230,25 +214,30 @@ static int asp_start(AFPConfig *config, AFPConfig *configs, } #endif /* no afp/asp */ -static int dsi_start(AFPConfig *config, AFPConfig *configs, - server_child *server_children) +static afp_child_t *dsi_start(AFPConfig *config, AFPConfig *configs, + server_child *server_children) { - DSI *dsi; + DSI *dsi = config->obj.handle; + afp_child_t *child = NULL; - if (!(dsi = dsi_getsession(config->obj.handle, server_children, - config->obj.options.tickleval))) { - LOG(log_error, logtype_afpd, "main: dsi_getsession: %s", strerror(errno) ); - exit( EXITERR_CLNT ); + if (!(child = dsi_getsession(dsi, + server_children, + config->obj.options.tickleval))) { + LOG(log_error, logtype_afpd, "dsi_start: session error: %s", strerror(errno)); + return NULL; } /* we've forked. */ - if (dsi->child) { + if (parent_or_child == 1) { configfree(configs, config); + config->obj.ipc_fd = child->ipc_fds[1]; + close(child->ipc_fds[0]); /* Close parent IPC fd */ + free(child); afp_over_dsi(&config->obj); /* start a session */ exit (0); } - return 0; + return child; } #ifndef NO_DDP @@ -373,12 +362,13 @@ static AFPConfig *DSIConfigInit(const struct afp_options *options, free(config); return NULL; } + dsi->dsireadbuf = options->dsireadbuf; if (options->flags & OPTION_PROXY) { - LOG(log_info, logtype_afpd, "AFP/TCP proxy initialized for %s:%d (%s)", + LOG(log_note, logtype_afpd, "AFP/TCP proxy initialized for %s:%d (%s)", getip_string((struct sockaddr *)&dsi->server), getip_port((struct sockaddr *)&dsi->server), VERSION); } else { - LOG(log_info, logtype_afpd, "AFP/TCP started, advertising %s:%d (%s)", + LOG(log_note, logtype_afpd, "AFP/TCP started, advertising %s:%d (%s)", getip_string((struct sockaddr *)&dsi->server), getip_port((struct sockaddr *)&dsi->server), VERSION); } @@ -547,11 +537,6 @@ AFPConfig *configinit(struct afp_options *cmdline) struct afp_options options; AFPConfig *config=NULL, *first = NULL; -#ifdef HAVE_ACLS - /* Parse afp_ldap.conf first so we can set the uuid option */ - acl_ldap_readconfig(_PATH_ACL_LDAPCONF); -#endif /* HAVE_ACLS */ - /* if config file doesn't exist, load defaults */ if ((fp = fopen(cmdline->configfile, "r")) == NULL) { @@ -585,14 +570,6 @@ AFPConfig *configinit(struct afp_options *cmdline) if (!afp_options_parseline(p, &options)) continue; -#ifdef HAVE_ACLS - /* Enable UUID support if LDAP config is complete */ - if (ldap_config_valid) { - LOG(log_info, logtype_afpd, "Enabling UUID support"); - options.flags |= OPTION_UUID; - } -#endif /* HAVE_ACLS */ - /* AFPConfigInit can return two linked configs due to DSI and ASP */ if (!first) { if ((first = AFPConfigInit(&options, cmdline))) @@ -602,6 +579,11 @@ AFPConfig *configinit(struct afp_options *cmdline) } } +#ifdef HAVE_LDAP + /* Parse afp_ldap.conf */ + acl_ldap_readconfig(_PATH_ACL_LDAPCONF); +#endif /* HAVE_LDAP */ + LOG(log_debug, logtype_afpd, "Finished parsing Config File"); fclose(fp); @@ -609,8 +591,10 @@ AFPConfig *configinit(struct afp_options *cmdline) first = AFPConfigInit(cmdline, cmdline); /* Now register with zeroconf, we also need the volumes for that */ - load_volumes(&first->obj); - zeroconf_register(first); + if (! (first->obj.options.flags & OPTION_NOZEROCONF)) { + load_volumes(&first->obj); + zeroconf_register(first); + } return first; }