@@ -71,6 +71,11 @@ static char *remmina_RSA_PubKey_v1 =
7171 "PwIDAQAB\n"
7272 "-----END PUBLIC KEY-----\n" ;
7373
74+ typedef struct {
75+ gboolean show_only ;
76+ JsonNode * statsroot ;
77+ } sc_tdata ;
78+
7479static void soup_callback (SoupSession * session , SoupMessage * msg , gpointer user_data )
7580{
7681 TRACE_CALL (__func__ );
@@ -167,13 +172,22 @@ static gboolean remmina_stats_collector_done(gpointer data)
167172 RSA * pubkey ;
168173 int pksize ;
169174 gchar * uid ;
175+ sc_tdata * sctdata ;
176+
177+ sctdata = (sc_tdata * )data ;
178+ if (sctdata == NULL )
179+ return G_SOURCE_REMOVE ;
170180
171- n = (JsonNode * )data ;
172- if (n == NULL )
181+ n = sctdata -> statsroot ;
182+ if (n == NULL ) {
183+ g_free (data );
173184 return G_SOURCE_REMOVE ;
185+ }
174186
175- if ((o = json_node_get_object (n )) == NULL )
187+ if ((o = json_node_get_object (n )) == NULL ) {
188+ g_free (data );
176189 return G_SOURCE_REMOVE ;
190+ }
177191
178192 uid = g_strdup (json_object_get_string_member (o , "UID" ));
179193
@@ -197,6 +211,7 @@ static gboolean remmina_stats_collector_done(gpointer data)
197211 BIO_free (pkbio );
198212 g_free (unenc_s );
199213 ERR_free_strings ();
214+ g_free (data );
200215 return G_SOURCE_REMOVE ;
201216 }
202217
@@ -224,20 +239,25 @@ static gboolean remmina_stats_collector_done(gpointer data)
224239 g_free (uid );
225240 g_free (enc_s );
226241
227- g = json_generator_new ();
228- json_generator_set_root (g , n );
229- enc_s = json_generator_to_data (g , NULL ); // unenc_s=serialized stats
230- g_object_unref (g );
231- json_node_unref (n );
242+ if (!sctdata -> show_only ) {
243+
244+ g = json_generator_new ();
245+ json_generator_set_root (g , n );
246+ enc_s = json_generator_to_data (g , NULL ); // unenc_s=serialized stats
247+ g_object_unref (g );
248+ json_node_unref (n );
232249
233250
234- ss = soup_session_new ();
235- msg = soup_message_new ("POST" , PERIODIC_UPLOAD_URL );
236- soup_message_set_request (msg , "application/json" ,
237- SOUP_MEMORY_COPY , enc_s , strlen (enc_s ));
238- soup_session_queue_message (ss , msg , soup_callback , enc_s );
251+ ss = soup_session_new ();
252+ msg = soup_message_new ("POST" , PERIODIC_UPLOAD_URL );
253+ soup_message_set_request (msg , "application/json" ,
254+ SOUP_MEMORY_COPY , enc_s , strlen (enc_s ));
255+ soup_session_queue_message (ss , msg , soup_callback , enc_s );
256+
257+ remmina_log_printf ("STATS upload: Starting upload to url %s\n" , PERIODIC_UPLOAD_URL );
258+ }
239259
240- remmina_log_printf ( "STATS upload: Starting upload to url %s\n" , PERIODIC_UPLOAD_URL );
260+ g_free ( data );
241261
242262 return G_SOURCE_REMOVE ;
243263}
@@ -247,20 +267,29 @@ static gpointer remmina_stats_collector(gpointer data)
247267{
248268 TRACE_CALL (__func__ );
249269 JsonNode * n ;
270+ sc_tdata * sctdata ;
271+
272+ sctdata = (sc_tdata * )data ;
250273 n = remmina_stats_get_all ();
251274
252275 /* stats collecting is done. Notify main thread calling
253276 * remmina_stats_collector_done() */
254- g_idle_add (remmina_stats_collector_done , n );
277+ sctdata -> statsroot = n ;
278+ g_idle_add (remmina_stats_collector_done , sctdata );
255279
256280 return NULL ;
257281}
258282
259- void remmina_stats_sender_send ()
283+ void remmina_stats_sender_send (gboolean show_only )
260284{
261285 TRACE_CALL (__func__ );
262286
263- g_thread_new ("stats_collector" , remmina_stats_collector , NULL );
287+ sc_tdata * sctdata ;
288+
289+ sctdata = g_malloc (sizeof (sc_tdata ));
290+ sctdata -> show_only = show_only ;
291+
292+ g_thread_new ("stats_collector" , remmina_stats_collector , (gpointer )sctdata );
264293
265294
266295}
@@ -287,7 +316,7 @@ static gboolean remmina_stats_sender_periodic_check(gpointer user_data)
287316 g_get_current_time (& t );
288317 /* If current time is after "next" or clock is going back (but > 1/1/2018), then do send stats */
289318 if (t .tv_sec > next || (t .tv_sec < remmina_pref .periodic_usage_stats_last_sent && t .tv_sec > 1514764800 )) {
290- remmina_stats_sender_send ();
319+ remmina_stats_sender_send (FALSE );
291320 }
292321
293322 periodic_check_counter ++ ;
0 commit comments