X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fafpd%2Fafp_dsi.c;h=8b1b1a8d7ce98624b41b0e0ae8edf22eaa195a06;hp=58c37009ef501ee47313c057fcd9a07941bd82c8;hb=321a0107c48da7b3fbf895a2b32244174c1ff39c;hpb=a83e8197c7b8af45f8d56acf158920c03698bfc6 diff --git a/etc/afpd/afp_dsi.c b/etc/afpd/afp_dsi.c index 58c37009..8b1b1a8d 100644 --- a/etc/afpd/afp_dsi.c +++ b/etc/afpd/afp_dsi.c @@ -76,7 +76,8 @@ static sigjmp_buf recon_jmp; static void afp_dsi_close(AFPObj *obj) { DSI *dsi = obj->dsi; - + sigset_t sigs; + close(obj->ipc_fd); obj->ipc_fd = -1; @@ -93,8 +94,12 @@ static void afp_dsi_close(AFPObj *obj) } close_all_vol(obj); - if (obj->logout) + if (obj->logout) { + /* Block sigs, PAM/systemd/whoever might send us a SIG??? in (*obj->logout)() -> pam_close_session() */ + sigfillset(&sigs); + pthread_sigmask(SIG_BLOCK, &sigs, NULL); (*obj->logout)(); + } LOG(log_note, logtype_afpd, "AFP statistics: %.2f KB read, %.2f KB written", dsi->read_count/1024.0, dsi->write_count/1024.0);