@@ -69,6 +69,7 @@ static struct io_plan *read_more(struct io_conn *conn, struct reckless *rkls)
6969static struct command_result * reckless_result (struct io_conn * conn ,
7070 struct reckless * reckless )
7171{
72+ io_close (conn );
7273 struct json_stream * response ;
7374 if (reckless -> process_failed ) {
7475 response = jsonrpc_stream_fail (reckless -> cmd ,
@@ -154,6 +155,14 @@ static void reckless_conn_finish(struct io_conn *conn,
154155 plugin_log (plugin , LOG_DBG , "err: %s" , strerror (errno ));
155156 struct pollfd pfd = { .fd = reckless -> logfd , .events = POLLIN };
156157 poll (& pfd , 1 , 20 ); // wait for any remaining log data
158+
159+ /* Close the log streaming socket. */
160+ if (reckless -> logfd ) {
161+ if (close (reckless -> logfd ) != 0 )
162+ plugin_log (plugin , LOG_DBG , "closing log socket failed: %s" , strerror (errno ));
163+ reckless -> logfd = 0 ;
164+ }
165+
157166 if (reckless -> pid > 0 ) {
158167 int status = 0 ;
159168 pid_t p ;
@@ -162,6 +171,7 @@ static void reckless_conn_finish(struct io_conn *conn,
162171 if (p != reckless -> pid && reckless -> pid ) {
163172 plugin_log (plugin , LOG_DBG , "reckless failed to exit, "
164173 "killing now." );
174+ io_close (conn );
165175 kill (reckless -> pid , SIGKILL );
166176 reckless_fail (reckless , "reckless process hung" );
167177 /* Reckless process exited and with normal status? */
@@ -253,7 +263,7 @@ static void log_notify(char * log_line TAKES)
253263static void log_conn_finish (struct io_conn * conn , struct reckless * reckless )
254264{
255265 io_close (conn );
256- close ( reckless -> logfd ) ;
266+ reckless -> logfd = 0 ;
257267
258268}
259269
0 commit comments