X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=command.c;h=72f8e04e7fe949c89bba065c857a0e7d9ab0820c;hb=3792a24ac9bb2ee3ea1505c18b3b9ff27db47287;hp=7b474ab1e9337c85dfc5db7b1a997a0c81e59da0;hpb=7dc1b56764191dab6aedf360c7a6d648fa49a37c;p=paraslash.git diff --git a/command.c b/command.c index 7b474ab1..72f8e04e 100644 --- a/command.c +++ b/command.c @@ -1100,18 +1100,24 @@ __noreturn void handle_connect(int fd, const char *peername) if (ret >= 0) goto out; err_out: - send_strerror(cc, -ret); + if (send_strerror(cc, -ret) >= 0 && cc->use_sideband) + send_sb(&cc->scc, NULL, 0, SBD_EXIT__FAILURE, true); net_err: PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); out: free(buf); free(command); - sc_free(cc->scc.recv); - sc_free(cc->scc.send); mutex_lock(mmd_mutex); if (cc->cmd && (cc->cmd->perms & AFS_WRITE) && ret >= 0) mmd->events++; mmd->active_connections--; mutex_unlock(mmd_mutex); + if (ret >= 0 && cc->use_sideband) { + ret = send_sb(&cc->scc, NULL, 0, SBD_EXIT__SUCCESS, true); + if (ret < 0) + PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); + } + sc_free(cc->scc.recv); + sc_free(cc->scc.send); exit(ret < 0? EXIT_FAILURE : EXIT_SUCCESS); }