X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fafp_dsi.c;h=f1e371676eac9d1213dbc7b667e6cc8c35cd9a9c;hb=a34b4264ed69791d41a8a6ea048e912ba8a8be0a;hp=47dd4e46ce9610017ebe83f3440b043e140a684c;hpb=df7560dfdb12b06090dc4b2c6e88d0858930b591;p=netatalk.git diff --git a/etc/afpd/afp_dsi.c b/etc/afpd/afp_dsi.c index 47dd4e46..f1e37167 100644 --- a/etc/afpd/afp_dsi.c +++ b/etc/afpd/afp_dsi.c @@ -24,6 +24,7 @@ #include #endif /* HAVE_SYS_STAT_H */ #include +#include #include #include #include @@ -37,12 +38,17 @@ #include #include #include +#include #include "switch.h" #include "auth.h" #include "fork.h" #include "dircache.h" +#ifndef SOL_TCP +#define SOL_TCP IPPROTO_TCP +#endif + /* * We generally pass this from afp_over_dsi to all afp_* funcs, so it should already be * available everywhere. Unfortunately some funcs (eg acltoownermode) need acces to it @@ -86,7 +92,7 @@ static void afp_dsi_close(AFPObj *obj) } } - close_all_vol(); + close_all_vol(obj); if (obj->logout) (*obj->logout)(); @@ -471,6 +477,10 @@ void afp_over_dsi(AFPObj *obj) } } + /* set TCP_NODELAY */ + int flag = 1; + setsockopt(dsi->socket, SOL_TCP, TCP_NODELAY, &flag, sizeof(flag)); + /* get stuck here until the end */ while (1) { if (sigsetjmp(recon_jmp, 1) != 0) @@ -528,7 +538,7 @@ void afp_over_dsi(AFPObj *obj) if (reload_request) { reload_request = 0; - load_volumes(AFPobj); + load_volumes(AFPobj, closevol); } /* The first SIGINT enables debugging, the next restores the config */ @@ -541,15 +551,15 @@ void afp_over_dsi(AFPObj *obj) if (debugging) { if (obj->options.logconfig) - setuplog(obj->options.logconfig); + setuplog(obj->options.logconfig, obj->options.logfile); else - setuplog("default log_note"); + setuplog("default:note", NULL); debugging = 0; } else { char logstr[50]; debugging = 1; - sprintf(logstr, "default log_maxdebug /tmp/afpd.%u.XXXXXX", getpid()); - setuplog(logstr); + sprintf(logstr, "/tmp/afpd.%u.XXXXXX", getpid()); + setuplog("default:maxdebug", logstr); } }