@@ -82,6 +82,21 @@ func sendReport() error {
8282 // Get network information
8383 logger .Info ("Collecting network information..." )
8484 networkInfo := networkMgr .GetNetworkInfo ()
85+ // Ensure DNSServers is never nil (should be empty slice, not nil)
86+ if networkInfo .DNSServers == nil {
87+ networkInfo .DNSServers = []string {}
88+ }
89+
90+ // Check if reboot is required and get installed kernel
91+ logger .Info ("Checking reboot status..." )
92+ needsReboot , rebootReason := systemDetector .CheckRebootRequired ()
93+ installedKernel := systemDetector .GetLatestInstalledKernel ()
94+ logger .WithFields (logrus.Fields {
95+ "needs_reboot" : needsReboot ,
96+ "reason" : rebootReason ,
97+ "installed_kernel" : installedKernel ,
98+ "running_kernel" : systemInfo .KernelVersion ,
99+ }).Info ("Reboot status check completed" )
85100
86101 // Get package information
87102 logger .Info ("Collecting package information..." )
@@ -155,9 +170,10 @@ func sendReport() error {
155170 IP : ipAddress ,
156171 Architecture : architecture ,
157172 AgentVersion : version .Version ,
158- MachineID : systemDetector .GetMachineID (),
159- KernelVersion : systemInfo .KernelVersion ,
160- SELinuxStatus : systemInfo .SELinuxStatus ,
173+ MachineID : systemDetector .GetMachineID (),
174+ KernelVersion : systemInfo .KernelVersion ,
175+ InstalledKernelVersion : installedKernel ,
176+ SELinuxStatus : systemInfo .SELinuxStatus ,
161177 SystemUptime : systemInfo .SystemUptime ,
162178 LoadAverage : systemInfo .LoadAverage ,
163179 CPUModel : hardwareInfo .CPUModel ,
@@ -169,6 +185,8 @@ func sendReport() error {
169185 DNSServers : networkInfo .DNSServers ,
170186 NetworkInterfaces : networkInfo .NetworkInterfaces ,
171187 ExecutionTime : executionTime ,
188+ NeedsReboot : needsReboot ,
189+ RebootReason : rebootReason ,
172190 }
173191
174192 // Send report
@@ -196,27 +214,40 @@ func sendReport() error {
196214 logger .WithError (err ).Warn ("PatchMon agent update failed, but data was sent successfully" )
197215 } else {
198216 logger .Info ("PatchMon agent update completed successfully" )
217+ // updateAgent() will exit the process after restart, so we won't reach here
218+ // But if it does return, skip the update check to prevent loops
219+ return nil
199220 }
200221 } else {
201- // Proactive update check after report
202- logger .Info ("Checking for agent updates..." )
203- versionInfo , err := getServerVersionInfo ()
204- if err != nil {
205- logger .WithError (err ).Warn ("Failed to check for updates after report" )
206- } else if versionInfo .HasUpdate {
207- logger .WithFields (logrus.Fields {
208- "current" : versionInfo .CurrentVersion ,
209- "latest" : versionInfo .LatestVersion ,
210- }).Info ("Update available, automatically updating..." )
211-
212- if err := updateAgent (); err != nil {
213- logger .WithError (err ).Warn ("PatchMon agent update failed, but data was sent successfully" )
222+ // Proactive update check after report (non-blocking with timeout)
223+ // Run in a goroutine to avoid blocking the report completion
224+ go func () {
225+ // Add a delay to prevent immediate checks after service restart
226+ // This gives the new process time to fully initialize
227+ time .Sleep (5 * time .Second )
228+
229+ logger .Info ("Checking for agent updates..." )
230+ versionInfo , err := getServerVersionInfo ()
231+ if err != nil {
232+ logger .WithError (err ).Warn ("Failed to check for updates after report (non-critical)" )
233+ return
234+ }
235+ if versionInfo .HasUpdate {
236+ logger .WithFields (logrus.Fields {
237+ "current" : versionInfo .CurrentVersion ,
238+ "latest" : versionInfo .LatestVersion ,
239+ }).Info ("Update available, automatically updating..." )
240+
241+ if err := updateAgent (); err != nil {
242+ logger .WithError (err ).Warn ("PatchMon agent update failed, but data was sent successfully" )
243+ } else {
244+ logger .Info ("PatchMon agent update completed successfully" )
245+ // updateAgent() will exit after restart, so this won't be reached
246+ }
214247 } else {
215- logger .Info ("PatchMon agent update completed successfully " )
248+ logger .WithField ( "version" , versionInfo . CurrentVersion ). Info ("Agent is up to date " )
216249 }
217- } else {
218- logger .WithField ("version" , versionInfo .CurrentVersion ).Debug ("Agent is up to date" )
219- }
250+ }()
220251 }
221252
222253 // Collect and send integration data (Docker, etc.) separately
0 commit comments