<div dir="ltr"><div><div><div><div><div><div><div><div>Hi,<br><br></div> I had previously sent a mail on this but got no response, so wanted to check again.<br><br></div> I am trying to use systemd as a way to store and restore the FDs used by a service, so that the service can provide continuation of service during an upgrade. for the purpose of trying it out, I am using a simple TCP echo server as my service<br><br></div> The issues I see are :<br><br></div>1. I store the fds using sd_pid_notify_with_fds, and then do a systemctl restart of the service. Then I use sd_listen_fds and get all the fds back and the service continues without disturbance. But the problem is<br><br></div>a.  systemd continues to hold all these fds, so now if my service is done with the fd and closes the connection, this is not getting through to the client, as systemd continues to have this fd<br><br></div>b. Even if the client closes the connection, my service gets it and closes the connection but systemd still holds on to this fd.<br><br></div> so in essence once I store the fd with systemd using sd_pid_notify_with_fds, they do not go away untill I do a systemctl stop of my service<br><br></div><div>This is making it difficult to use this service in the intended way. It would be nice<br></div><div>if on sd_listen_fds, the sytemd passes all fds back to the service and internally cleared its state, so that only the service has the fds. (this is ofcourse only for<br></div><div>those fds that the service had previously send in sd_pid_notify_with_fds, the other fds that the service gets as part of socket activation would continue to be held in systemd also.)<br><br></div><div>Let me know if this sounds correct, or am I mis-understanding the way this service is to be used.<br><br></div><div>Thanks<br></div><div>Jana<br><br></div><div><div><div><div><br></div></div></div></div></div>