From 1258c4638fba6df430e3c4948ee16fa4281d4f5a Mon Sep 17 00:00:00 2001 From: fanasina Date: Mon, 15 Dec 2025 23:12:51 +0100 Subject: [PATCH] y_file_handler: return symlink cible with readlink --- y_socket_t/src/y_socket_t/y_file_handler.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/y_socket_t/src/y_socket_t/y_file_handler.c b/y_socket_t/src/y_socket_t/y_file_handler.c index e9ecba7..676d737 100644 --- a/y_socket_t/src/y_socket_t/y_file_handler.c +++ b/y_socket_t/src/y_socket_t/y_file_handler.c @@ -536,6 +536,7 @@ void* y_socket_send_file_for_node(void* arg){ struct pollfd *fds=argS->fds; y_NODE_T node=argS->node; + char * filename=argS->filename; #if TEMP_ADDR char tempAddr[64]; @@ -605,10 +606,27 @@ for(int tour_i=0;(tour_i<4) && (check_if_in_ok_header_l_(argS->m_ok_head_l_t, na ++seq; len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"tm\" : \"%ld\" }",filename, seq, timeid); } + char linkedFileName[BUF_SIZE+1]; + linkedFileName[0]='\0'; + ssize_t lenLinkedFileName = readlink(argS->filename, linkedFileName, BUF_SIZE); + if(argS->dst_dir){ - len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" , \"dst_dir\" : \"%s\" }",filename, seq, timeid, argS->dst_dir); + if(lenLinkedFileName==-1) + len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" , \"dst_dir\" : \"%s\" }",filename, seq, timeid, argS->dst_dir); + else{ + char *optLinked=malloc(lenLinkedFileName+1); + strcpy(optLinked, linkedFileName); + len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" , \"dst_dir\" : \"%s\" , \"readlink\" : \"%s\" }",filename, seq, timeid, argS->dst_dir, optLinked); + free(optLinked); + } }else{ - len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" }",filename, seq, timeid); + if(lenLinkedFileName==-1) + len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" }",filename, seq, timeid); + else { + char *optLinked=malloc(lenLinkedFileName+1); + len_local_header_ = sprintf(buf_send, "{ \"cmd\" : \"post file %s\", \"seq\" : %ld , \"EOF\" : true , \"tm\" : \"%ld\" , \"readlink\" : \"%s\" }",filename, seq, timeid, optLinked); + free(optLinked); + } } if(sendto(fds[(c_af==AF_INET6)].fd, buf_send, len_local_header_,