@@ -86,6 +86,13 @@ static int protocol_send(Manager *m, struct iovec *iovec, unsigned n_iovec) {
8686 return r ;
8787 }
8888 break ;
89+ case SYSLOG_TRANSMISSION_PROTOCOL_TCP :
90+ r = network_send (m , iovec , n_iovec );
91+ if (r < 0 && r != - EAGAIN ) {
92+ manager_close_network_socket (m );
93+ return r ;
94+ }
95+ break ;
8996 default :
9097 return network_send (m , iovec , n_iovec );
9198 }
@@ -297,9 +304,6 @@ int manager_push_to_network(Manager *m,
297304
298305 assert (m );
299306
300- if (!message )
301- return 0 ;
302-
303307 switch (m -> protocol ) {
304308 case SYSLOG_TRANSMISSION_PROTOCOL_DTLS :
305309 if (!m -> dtls -> connected ) {
@@ -316,6 +320,13 @@ int manager_push_to_network(Manager *m,
316320 return r ;
317321 }
318322 break ;
323+ case SYSLOG_TRANSMISSION_PROTOCOL_TCP :
324+ if (!m -> connected ) {
325+ r = manager_open_network_socket (m );
326+ if (r < 0 )
327+ return r ;
328+ }
329+ break ;
319330 default :
320331 break ;
321332 }
@@ -340,6 +351,7 @@ void manager_close_network_socket(Manager *m) {
340351 log_error_errno (errno , "Failed to shutdown netlog socket: %m" );
341352 }
342353
354+ m -> connected = false;
343355 m -> socket = safe_close (m -> socket );
344356}
345357
@@ -377,11 +389,16 @@ int manager_network_connect_socket(Manager *m) {
377389 if (r < 0 )
378390 return r ;
379391
392+ log_debug ("Connecting to remote server: '%s'" , pretty );
393+
380394 r = connect (m -> socket , & m -> address .sockaddr .sa , salen );
381395 if (r < 0 && errno != EINPROGRESS )
382- return log_error_errno (errno , "Failed to connect to remote server='%s'" , pretty );
396+ return log_error_errno (errno , "Failed to connect to remote server='%s': %m " , pretty );
383397
384- log_debug ("Connected to remote server: '%s'" , pretty );
398+ if (errno != EINPROGRESS )
399+ log_debug ("Connected to remote server: '%s'" , pretty );
400+ else
401+ log_debug ("Connection in progress to remote server: '%s'" , pretty );
385402
386403 return 0 ;
387404}
@@ -407,6 +424,8 @@ int manager_open_network_socket(Manager *m) {
407424 if (m -> socket < 0 )
408425 return log_error_errno (errno , "Failed to create socket: %m" );;
409426
427+ log_debug ("Successfully created socket with fd='%d'" , m -> socket );
428+
410429 switch (m -> protocol ) {
411430 case SYSLOG_TRANSMISSION_PROTOCOL_UDP : {
412431 r = setsockopt_int (m -> socket , IPPROTO_IP , IP_MULTICAST_LOOP , true);
@@ -462,17 +481,14 @@ int manager_open_network_socket(Manager *m) {
462481 }
463482
464483 r = fd_nonblock (m -> socket , true);
465- if (r < 0 ) {
466- log_error_errno (errno , "Failed to set socket nonblock: %m" );
467- goto fail ;
468- }
484+ if (r < 0 )
485+ log_debug_errno (errno , "Failed to set socket='%d' nonblock: %m" , m -> socket );
469486
470487 r = manager_network_connect_socket (m );
471488 if (r < 0 )
472489 goto fail ;
473490
474- log_debug ("Successfully created socket with fd='%d'" , m -> socket );
475-
491+ m -> connected = true;
476492 return m -> socket ;
477493
478494 fail :
0 commit comments