control: remove unused "rollback complete" reply.
authorDavin McCall <davmac@davmac.org>
Tue, 20 Nov 2018 18:32:55 +0000 (18:32 +0000)
committerDavin McCall <davmac@davmac.org>
Tue, 20 Nov 2018 18:32:55 +0000 (18:32 +0000)
The connection should close before the reply could be sent, so don't
even pretend that it will be sent.

src/control.cc
src/dinitctl.cc
src/includes/control-cmds.h
src/includes/control.h

index 2d9ba398a79f3be9aa7b92fec5f38c761acd1d8d..7933b3271e1fb6b1462e4148655570d03b8873f4 100644 (file)
@@ -781,12 +781,6 @@ bool control_conn_t::queue_packet(std::vector<char> &&pkt) noexcept
     }
 }
 
-bool control_conn_t::rollback_complete() noexcept
-{
-    char ackBuf[2] = { DINIT_ROLLBACK_COMPLETED, 2 };
-    return queue_packet(ackBuf, 2);
-}
-
 bool control_conn_t::data_ready() noexcept
 {
     int fd = iob.get_watched_fd();
index fadc2fb055bd3ce99bd7b40e2521266e0a65fe37..40590e22fdcd6e9b7970d5ee5314874eae50f4b9 100644 (file)
@@ -838,19 +838,15 @@ static int shutdown_dinit(int socknum, cpbuffer_t &rbuffer)
         return 1;
     }
 
-    // Now wait for rollback complete:
+    // Now wait for rollback complete, by waiting for the connection to close:
     try {
         while (true) {
             wait_for_info(rbuffer, socknum);
-            if (rbuffer[0] == DINIT_ROLLBACK_COMPLETED) {
-                break;
-            }
+            rbuffer.consume(rbuffer[1]);
         }
     }
     catch (cp_read_exception &exc) {
-        // Dinit can terminate before replying: let's assume that happened.
-        // TODO: better check, possibly ensure that dinit actually sends rollback complete before
-        // termination.
+        // Assume that the connection closed.
     }
 
     return 0;
@@ -859,7 +855,8 @@ static int shutdown_dinit(int socknum, cpbuffer_t &rbuffer)
 // exception for cancelling a service operation
 class service_op_cancel { };
 
-static int enable_disable_service(int socknum, cpbuffer_t &rbuffer, const char *from, const char *to, bool enable)
+static int enable_disable_service(int socknum, cpbuffer_t &rbuffer, const char *from, const char *to,
+        bool enable)
 {
     using namespace std;
 
@@ -1028,14 +1025,16 @@ static int enable_disable_service(int socknum, cpbuffer_t &rbuffer, const char *
     // create link
     if (enable) {
         if (symlink((string("../") + to).c_str(), dep_link_path.c_str()) == -1) {
-            cerr << "dinitctl: Could not create symlink at " << dep_link_path << ": " << strerror(errno) << "\n"
-                    "dinitctl: Note: service was activated, but will not be enabled on restart." << endl;
+            cerr << "dinitctl: Could not create symlink at " << dep_link_path << ": " << strerror(errno)
+                    << "\n" "dinitctl: Note: service was activated, but will not be enabled on restart."
+                    << endl;
             return 1;
         }
     }
     else {
         if (unlink(dep_link_path.c_str()) == -1) {
-            cerr << "dinitctl: Could not unlink dependency entry " << dep_link_path << ": " << strerror(errno) << "\n"
+            cerr << "dinitctl: Could not unlink dependency entry " << dep_link_path << ": "
+                    << strerror(errno) << "\n"
                     "dinitctl: Note: service was disabled, but will be re-enabled on restart." << endl;
             return 1;
         }
index 21f7de5f71b283dbe96baa2f07236f8352081d29..ed5d844817ba8b12ebb8668d84c7a210f80c72ac 100644 (file)
@@ -82,6 +82,3 @@ constexpr static int DINIT_RP_LOADER_MECH = 64;
 
 // Service event occurred (4-byte service handle, 1 byte event code)
 constexpr static int DINIT_IP_SERVICEEVENT = 100;
-
-// rollback completed
-constexpr static int DINIT_ROLLBACK_COMPLETED = 101;
index e2414d48ea8f79e5869bf556f33f88afc1844800..62f54b0a4b74ed248b8c80e388821b9196be36e6 100644 (file)
@@ -226,8 +226,6 @@ class control_conn_t : private service_listener
     
     control_conn_t(const control_conn_t &) = delete;
 
-    bool rollback_complete() noexcept;
-        
     virtual ~control_conn_t() noexcept;
 };