packages: atftp/atftp-debian.patch, atftp/atftp.spec - rel 14; update debia...

arekm arekm at pld-linux.org
Fri Jul 22 11:30:28 CEST 2011


Author: arekm                        Date: Fri Jul 22 09:30:28 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel 14; update debian patch (ipv6 support and other fixes)

---- Files affected:
packages/atftp:
   atftp-debian.patch (1.1 -> 1.2) , atftp.spec (1.27 -> 1.28) 

---- Diffs:

================================================================
Index: packages/atftp/atftp-debian.patch
diff -u packages/atftp/atftp-debian.patch:1.1 packages/atftp/atftp-debian.patch:1.2
--- packages/atftp/atftp-debian.patch:1.1	Fri Jan 12 17:32:44 2007
+++ packages/atftp/atftp-debian.patch	Fri Jul 22 11:30:22 2011
@@ -1,133 +1,20263 @@
---- atftp-0.7.dfsg.orig/tftpd.c
-+++ atftp-0.7.dfsg/tftpd.c
-@@ -157,6 +157,7 @@
-      struct servent *serv;
-      struct passwd *user;
-      struct group *group;
-+     pthread_t tid;
- 
- #ifdef HAVE_MTFTP
-      pthread_t mtftp_thread;
-@@ -300,11 +301,13 @@
-           open_logger("atftpd", log_file, logging_level);
-      }
+--- atftp-0.7.dfsg.orig/tftpd_file.c
++++ atftp-0.7.dfsg/tftpd_file.c
+@@ -110,8 +110,9 @@
+      int block_number = 0;
+      int data_size;
+      int sockfd = data->sockfd;
+-     struct sockaddr_in *sa = &data->client_info->client;
+-     struct sockaddr_in from;
++     struct sockaddr_storage *sa = &data->client_info->client;
++     struct sockaddr_storage from;
++     char addr_str[SOCKADDR_PRINT_ADDR_LEN];
+      struct tftphdr *tftphdr = (struct tftphdr *)data->data_buffer;
+      FILE *fp;
+      char filename[MAXLEN];
+@@ -269,7 +270,8 @@
+                     if (number_of_timeout > NB_OF_RETRY)
+                     {
+                          logger(LOG_INFO, "client (%s) not responding",
+-                                inet_ntoa(data->client_info->client.sin_addr));
++                                sockaddr_print_addr(&data->client_info->client,
++                                                    addr_str, sizeof(addr_str)));
+                          state = S_END;
+                     }
+                     else
+@@ -290,12 +292,13 @@
+                      * **** test since the port number is the TID. Use this
+                      * **** only if you know what you're doing.
+                      */
+-                    if (sa->sin_port != from.sin_port)
++                    if (sockaddr_get_port(sa) != sockaddr_get_port(&from))
+                     {
+                          if (data->checkport)
+                          {
+                               logger(LOG_WARNING, "packet discarded <%s>",
+-                                     inet_ntoa(from.sin_addr));
++                                     sockaddr_print_addr(&from, addr_str,
++                                                         sizeof(addr_str)));
+                               break;
+                          }
+                          else
+@@ -311,12 +314,13 @@
+                     break;
+                case GET_DATA:
+                     /* Check that source port match */
+-                    if (sa->sin_port != from.sin_port)
++                    if (sockaddr_get_port(sa) != sockaddr_get_port(&from))
+                     {
+                          if (data->checkport)
+                          {
+                               logger(LOG_WARNING, "packet discarded <%s>",
+-                                     inet_ntoa(from.sin_addr));
++                                     sockaddr_print_addr(&from, addr_str,
++                                                         sizeof(addr_str)));
+                               break;
+                          }
+                          else
+@@ -328,7 +332,8 @@
+                case GET_DISCARD:
+                     /* FIXME: should we increment number_of_timeout */
+                     logger(LOG_WARNING, "packet discarded <%s>",
+-                           inet_ntoa(from.sin_addr));
++                           sockaddr_print_addr(&from, addr_str,
++                                               sizeof(addr_str)));
+                     break;
+                case ERR:
+                     logger(LOG_ERR, "%s: %d: recvfrom: %s",
+@@ -405,8 +410,9 @@
+      int block_number = 0;
+      int last_block = -1;
+      int data_size;
+-     struct sockaddr_in *sa = &data->client_info->client;
+-     struct sockaddr_in from;
++     struct sockaddr_storage *sa = &data->client_info->client;
++     struct sockaddr_storage from;
++     char addr_str[SOCKADDR_PRINT_ADDR_LEN];
+      int sockfd = data->sockfd;
+      struct tftphdr *tftphdr = (struct tftphdr *)data->data_buffer;
+      FILE *fp;
+@@ -618,6 +624,8 @@
+           }
+           else
+           {
++               struct addrinfo hints, *result;
++
+                /* configure socket, get an IP address */
+                if (tftpd_mcast_get_tid(&data->mc_addr, &data->mc_port) != OK)
+                {
+@@ -629,29 +637,37 @@
+                       data->mc_addr, data->mc_port);
  
-+#ifdef SOL_IP
-      /* We need to retieve some information from incomming packets */
-      if (setsockopt(0, SOL_IP, IP_PKTINFO, &one, sizeof(one)) != 0)
-      {
-           logger(LOG_WARNING, "Failed to set socket option: %s", strerror(errno));
-      }
-+#endif
+                /* convert address */
+-               if (inet_aton(data->mc_addr, &data->sa_mcast.sin_addr) == 0)
++               memset(&hints, 0, sizeof(hints));
++               hints.ai_socktype = SOCK_DGRAM;
++               hints.ai_flags = AI_NUMERICHOST;
++               if (getaddrinfo(data->mc_addr, NULL, &hints, &result) ||
++                   sockaddr_set_addrinfo(&data->sa_mcast, result))
+                {
+                     logger(LOG_ERR, "bad address %s\n",data->mc_addr);
+                     fclose(fp);
+                     return ERR;
+                }
+-               data->sa_mcast.sin_family = AF_INET; /* FIXME: IPv6 */
+-               data->sa_mcast.sin_port = htons(data->mc_port);
++               freeaddrinfo(result);
++               sockaddr_set_port(&data->sa_mcast, data->mc_port);
++
+                /* verify address is multicast */
+-               if (!IN_MULTICAST(ntohl(data->sa_mcast.sin_addr.s_addr)))
++               if (!sockaddr_is_multicast(&data->sa_mcast))
+                {
+                     logger(LOG_ERR, "bad multicast address %s\n",
+-                           inet_ntoa(data->sa_mcast.sin_addr));
++                           sockaddr_print_addr(&data->sa_mcast,
++                                               addr_str, sizeof(addr_str)));
+                     fclose(fp);
+                     return ERR;
+                }
  
-      /* save main thread ID for proper signal handling */
-      main_thread_id = pthread_self();
-@@ -466,7 +469,7 @@
-                new->client_info->next = NULL;
+                /* initialise multicast address structure */
+-               data->mcastaddr.imr_multiaddr.s_addr =
+-                    data->sa_mcast.sin_addr.s_addr;
+-               data->mcastaddr.imr_interface.s_addr = htonl(INADDR_ANY); 
+-               setsockopt(data->sockfd, IPPROTO_IP, IP_MULTICAST_TTL, 
+-                          &data->mcast_ttl, sizeof(data->mcast_ttl));
++               sockaddr_get_mreq(&data->sa_mcast, &data->mcastaddr);
++               if (data->sa_mcast.ss_family == AF_INET)
++                    setsockopt(data->sockfd, IPPROTO_IP, IP_MULTICAST_TTL,
++                               &data->mcast_ttl, sizeof(data->mcast_ttl));
++               else
++                    setsockopt(data->sockfd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
++                               &data->mcast_ttl, sizeof(data->mcast_ttl));
                 
-                /* Start a new server thread. */
--               if (pthread_create(&new->tid, NULL, tftpd_receive_request,
-+               if (pthread_create(&tid, NULL, tftpd_receive_request,
-                                   (void *)new) != 0)
+                /* set options data for OACK */
+                opt_set_multicast(data->tftp_options, data->mc_addr,
+@@ -660,8 +676,8 @@
+                       data->mc_port, 1);
+             
+                /* the socket must be unconnected for multicast */
+-               sa->sin_family = AF_UNSPEC;
+-               connect(sockfd, (struct sockaddr *)sa, sizeof(sa));
++               sa->ss_family = AF_UNSPEC;
++               connect(sockfd, (struct sockaddr *)sa, sizeof(*sa));
+ 
+                /* set multicast flag */
+                multicast = 1;
+@@ -689,7 +705,9 @@
+                     if (data->trace)
+                     {
+                          logger(LOG_DEBUG, "sent ERROR <code: %d, msg: %s> to %s", EUNDEF,
+-                                tftp_errmsg[EUNDEF], inet_ntoa(client_info->client.sin_addr));
++                                tftp_errmsg[EUNDEF],
++                                sockaddr_print_addr(&client_info->client,
++                                                    addr_str, sizeof(addr_str)));
+                     }
+                } while (tftpd_clientlist_next(data, &client_info) == 1);
+                state = S_ABORT;
+@@ -751,7 +769,8 @@
+                     if (number_of_timeout > NB_OF_RETRY)
+                     {
+                          logger(LOG_INFO, "client (%s) not responding",
+-                                inet_ntoa(client_info->client.sin_addr));
++                                sockaddr_print_addr(&client_info->client,
++                                                    addr_str, sizeof(addr_str)));
+                          state = S_END;
+                     }
+                     else
+@@ -780,8 +799,11 @@
+                                       going to OACK state */
+                                    logger(LOG_INFO,
+                                           "Serving next client: %s:%d",
+-                                          inet_ntoa(client_info->client.sin_addr),
+-                                          ntohs(client_info->client.sin_port));
++                                          sockaddr_print_addr(
++                                               &client_info->client,
++                                               addr_str, sizeof(addr_str)),
++                                          sockaddr_get_port(
++                                               &client_info->client));
+                                    sa = &client_info->client;
+                                    state = S_SEND_OACK;
+                                    break;
+@@ -804,8 +826,7 @@
+                     /* handle case where packet come from un unexpected client */
+                     if (multicast)
+                     {
+-                         if ((sa->sin_port != from.sin_port) ||
+-                             (sa->sin_addr.s_addr != from.sin_addr.s_addr))
++                         if (!sockaddr_equal(sa, &from))
+                          {
+                               /* We got an ACK from a client that is not the master client.
+                                * If this is an ACK for the last block, mark this client as
+@@ -815,10 +836,15 @@
+                               {
+                                    if (tftpd_clientlist_done(data, NULL, &from) == 1)
+                                         logger(LOG_DEBUG, "client done <%s>",
+-                                               inet_ntoa(client_info->client.sin_addr));
++                                               sockaddr_print_addr(
++                                                    &from, addr_str,
++                                                    sizeof(addr_str)));
+                                    else
+                                         logger(LOG_WARNING, "packet discarded <%s:%d>",
+-                                               inet_ntoa(from.sin_addr), ntohs(from.sin_port));
++                                               sockaddr_print_addr(
++                                                    &from, addr_str,
++                                                    sizeof(addr_str)),
++                                               sockaddr_get_port(&from));
+                               }
+                               else
+                                    /* If not, send and OACK with mc=0 to shut it up. */
+@@ -837,12 +863,14 @@
+                     else
+                     {
+                          /* check that the packet is from the current client */
+-                         if (sa->sin_port != from.sin_port)
++                         if (sockaddr_get_port(sa) != sockaddr_get_port(&from))
+                          {
+                               if (data->checkport)
+                               {
+                                    logger(LOG_WARNING, "packet discarded <%s:%d>",
+-                                          inet_ntoa(from.sin_addr), ntohs(from.sin_port));
++                                          sockaddr_print_addr(&from, addr_str,
++                                                              sizeof(addr_str)),
++                                          sockaddr_get_port(&from));
+                                    break;
+                               }
+                               else
+@@ -868,19 +896,21 @@
+                     if (multicast)
+                     {
+                          /* if packet is not from the current master client */
+-                         if ((sa->sin_port != from.sin_port) ||
+-                              (sa->sin_addr.s_addr != from.sin_addr.s_addr))
++                         if (!sockaddr_equal(sa, &from))
+                          {
+                               /* mark this client done */
+                               if (tftpd_clientlist_done(data, NULL, &from) == 1)
+                               {
+                                    if (data->trace)
+                                         logger(LOG_DEBUG, "client sent ERROR, mark as done <%s>",
+-                                               inet_ntoa(client_info->client.sin_addr));
++                                               sockaddr_print_addr(
++                                                    &from, addr_str,
++                                                    sizeof(addr_str)));
+                               }
+                               else
+                                    logger(LOG_WARNING, "packet discarded <%s>",
+-                                          inet_ntoa(from.sin_addr));
++                                          sockaddr_print_addr(&from, addr_str,
++                                                              sizeof(addr_str)));
+                               /* current state is unchanged */
+                               break;
+                          }
+@@ -888,12 +918,13 @@
+                     else
+                     {
+                          /* check that the packet is from the current client */
+-                         if (sa->sin_port != from.sin_port)
++                         if (sockaddr_get_port(sa) != sockaddr_get_port(&from))
+                          {
+                               if (data->checkport)
+                               {
+                                    logger(LOG_WARNING, "packet discarded <%s>",
+-                                          inet_ntoa(from.sin_addr));
++                                          sockaddr_print_addr(&from, addr_str,
++                                                              sizeof(addr_str)));
+                                    break;
+                               }
+                               else
+@@ -919,7 +950,8 @@
+                case GET_DISCARD:
+                     /* FIXME: should we increment number_of_timeout */
+                     logger(LOG_WARNING, "packet discarded <%s>",
+-                           inet_ntoa(from.sin_addr));
++                           sockaddr_print_addr(&from, addr_str,
++                                               sizeof(addr_str)));
+                     break;
+                case ERR:
+                     logger(LOG_ERR, "%s: %d: recvfrom: %s",
+@@ -944,8 +976,9 @@
+                     {
+                          logger(LOG_INFO,
+                                 "Serving next client: %s:%d",
+-                                inet_ntoa(client_info->client.sin_addr),
+-                                ntohs(client_info->client.sin_port));
++                                sockaddr_print_addr(&client_info->client,
++                                                    addr_str, sizeof(addr_str)),
++                                sockaddr_get_port(&client_info->client));
+                          /* client is a new client structure */
+                          sa =  &client_info->client;
+                          /* nedd to send an oack to that client */
+--- atftp-0.7.dfsg.orig/tftpd_list.c
++++ atftp-0.7.dfsg/tftpd_list.c
+@@ -173,8 +173,7 @@
+ 
+                          while (1)
+                          {
+-                              if ((tmp->client.sin_port == client->client.sin_port) &&
+-                                  (tmp->client.sin_addr.s_addr == client->client.sin_addr.s_addr) &&
++                              if (sockaddr_equal(&tmp->client, &client->client) &&
+                                   (tmp->done == 0))
+                               {
+                                    /* unlock mutex and exit */
+@@ -249,7 +248,7 @@
+  */
+ int tftpd_clientlist_done(struct thread_data *thread,
+                           struct client_info *client,
+-                          struct sockaddr_in *sock)
++                          struct sockaddr_storage *sock)
+ {
+      struct client_info *head = thread->client_info;
+ 
+@@ -266,7 +265,7 @@
+           /* walk the list to find this client */
+           while (head)
+           {
+-               if (memcmp(sock, &head->client, sizeof(struct sockaddr_in)) == 0)
++               if (sockaddr_equal(sock, &head->client))
                 {
-                     logger(LOG_ERR, "Failed to start new thread");
-@@ -567,7 +570,8 @@
+                     head->done = 1;
+                     pthread_mutex_unlock(&thread->client_mutex);
+--- atftp-0.7.dfsg.orig/tftpd_pcre.c
++++ atftp-0.7.dfsg/tftpd_pcre.c
+@@ -211,9 +211,9 @@
+                chp++; /* point to value indicating substring */
+                rc = pcre_get_substring(str, ovector, matches, *chp - 0x30, &tmpstr);
+                /* found string */
+-               if (rc > 0)
++               if (rc > 0 && outchp - outstr + rc+1 < outsize)
+                {
+-                    Strncpy(outchp, tmpstr, rc);
++                    Strncpy(outchp, tmpstr, rc+1);
+                     outchp += rc;
+                     pcre_free_substring(tmpstr);
+                     continue;
+--- atftp-0.7.dfsg.orig/tftp_mtftp.c
++++ atftp-0.7.dfsg/tftp_mtftp.c
+@@ -112,18 +112,20 @@
+      int data_size;             /* size of data received */
+      int sockfd = data->sockfd; /* just to simplify calls */
+      int sock;
+-     struct sockaddr_in sa;     /* a copy of data.sa_peer */
+-     struct sockaddr_in from;
++     struct sockaddr_storage sa; /* a copy of data.sa_peer */
++     struct sockaddr_storage from;
++     char from_str[SOCKADDR_PRINT_ADDR_LEN];
+      struct tftphdr *tftphdr = (struct tftphdr *)data->data_buffer;
+      FILE *fp = NULL;           /* the local file pointer */
+      int number_of_timeout = 0;
+      int timeout = 0;
  
-      /* Detach ourself. That way the main thread does not have to
-       * wait for us with pthread_join. */
--     pthread_detach(pthread_self());
-+     data->tid = pthread_self();
-+     pthread_detach(data->tid);
+-     struct in_addr mcast_addr;
++     struct sockaddr_storage sa_mcast_group;
+      int mcast_sockfd = 0;
+-     struct sockaddr_in sa_mcast;
+-     struct ip_mreq mreq;
+-     struct hostent *host;
++     struct sockaddr_storage sa_mcast;
++     union ip_mreq_storage mreq;
++     struct addrinfo hints, *addrinfo;
++     int err;
  
-      /* Read the first packet from stdin. */
-      data_size = data->data_buffer_size;     
-@@ -732,8 +736,8 @@
-      tftpd_clientlist_free(data);
+      int mode = LISTEN;
+      unsigned int file_bitmap[NB_BLOCK];
+@@ -132,13 +134,13 @@
  
-      /* free the thread structure */
--     free(data);
--     
-+     free(data);    
-+
-      logger(LOG_INFO, "Server thread exiting");
-      pthread_exit(NULL);
- }
---- atftp-0.7.dfsg.orig/argz.h
-+++ atftp-0.7.dfsg/argz.h
-@@ -180,7 +180,7 @@
- #ifdef __USE_EXTERN_INLINES
- extern inline char *
- __argz_next (__const char *__argz, size_t __argz_len,
--	     __const char *__entry) __THROW
-+	     __const char *__entry)
- {
-   if (__entry)
-     {
-@@ -194,7 +194,7 @@
- }
- extern inline char *
- argz_next (__const char *__argz, size_t __argz_len,
--	   __const char *__entry) __THROW
-+	   __const char *__entry)
- {
-   return __argz_next (__argz, __argz_len, __entry);
- }
---- atftp-0.7.dfsg.orig/Makefile.am
-+++ atftp-0.7.dfsg/Makefile.am
-@@ -32,7 +32,7 @@
- 		   argz.c tftp_mtftp.c
+      data->file_size = 0;
+      tftp_cancel = 0;
+-     from.sin_addr.s_addr = 0;
++     memset(&from, 0, sizeof(from));
  
- sbin_PROGRAMS    = atftpd
--atftpd_LDADD     = $(LIBPTHREAD) $(LIBWRAP) $(LIBPCRE)
-+atftpd_LDADD     = $(LIBWRAP) $(LIBPTHREAD) $(LIBPCRE)
- atftpd_SOURCES   = tftpd.c logger.c options.c stats.c tftp_io.c tftp_def.c \
-                    tftpd_file.c tftpd_list.c tftpd_mcast.c argz.c tftpd_pcre.c \
- 		   tftpd_mtftp.c
---- atftp-0.7.dfsg.orig/tftp_io.c
-+++ atftp-0.7.dfsg/tftp_io.c
-@@ -284,12 +284,14 @@
-                     cmsg != NULL && cmsg->cmsg_len >= sizeof(*cmsg);
-                     cmsg = CMSG_NXTHDR(&msg, cmsg))
+-     memset(&sa_mcast, 0, sizeof(struct sockaddr_in));
++     memset(&sa_mcast, 0, sizeof(struct sockaddr_storage));
+      memset(&file_bitmap, 0, sizeof(file_bitmap));
+ 
+      /* make sure the socket is not connected */
+-     sa.sin_family = AF_UNSPEC;
++     sa.ss_family = AF_UNSPEC;
+      connect(sockfd, (struct sockaddr *)&sa, sizeof(sa));
+ 
+      /* copy sa_peer structure */
+@@ -170,13 +172,14 @@
+      }
+      
+      /* Configure multicast stuff,  look up the host */
+-     host = gethostbyname(data->mtftp_mcast_ip);
+      /* if valid, update s_inn structure */
+-     if (host)
++     memset(&hints, 0, sizeof(hints));
++     hints.ai_socktype = SOCK_DGRAM;
++     if (!getaddrinfo(data->mtftp_mcast_ip, NULL, &hints, &addrinfo) &&
++         !sockaddr_set_addrinfo(&sa_mcast_group, addrinfo))
+      {
+-	  memcpy(&mcast_addr, host->h_addr_list[0],
+-		 host->h_length);
+-	  if (!IN_MULTICAST(ntohl(mcast_addr.s_addr)))
++          freeaddrinfo(addrinfo);
++          if (!sockaddr_is_multicast(&sa_mcast_group))
+ 	  {
+ 	       fprintf(stderr,
+ 		       "mtftp: bad multicast address %s\n",
+@@ -196,9 +199,9 @@
+ 	  perror("atftp: socket");
+ 	  exit(1);
+      }                   
+-     sa_mcast.sin_family = AF_INET;
+-     sa_mcast.sin_addr.s_addr = htonl(INADDR_ANY);
+-     sa_mcast.sin_port = htons(data->mtftp_client_port);
++     memset(&sa_mcast, 0, sizeof(sa_mcast));
++     sa_mcast.ss_family = sa_mcast_group.ss_family;
++     sockaddr_set_port(&sa, data->mtftp_client_port);
+                          
+      if (bind(mcast_sockfd, (struct sockaddr *)&sa_mcast,
+ 	      sizeof(sa_mcast)) < 0)
+@@ -206,13 +209,15 @@
+ 	  perror("atftp: bind");
+ 	  exit(1);
+      }
+-                         
+-     mreq.imr_multiaddr.s_addr = mcast_addr.s_addr;
+-     mreq.imr_interface.s_addr = htonl(INADDR_ANY); 
+-
+-     if (setsockopt(mcast_sockfd, IPPROTO_IP,
+-		    IP_ADD_MEMBERSHIP, 
+-		    &mreq, sizeof(mreq)) < 0)
++              
++     sockaddr_get_mreq(&sa_mcast_group, &mreq);
++     if (sa_mcast_group.ss_family == AF_INET)
++          err = setsockopt(mcast_sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, 
++                           &mreq.v4, sizeof(mreq.v4));
++     else
++          err = setsockopt(mcast_sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP,
++                           &mreq.v6, sizeof(mreq.v6));
++     if (err < 0)
+      {
+ 	  perror("atftp: setsockopt");
+ 	  exit(1);
+@@ -228,7 +233,7 @@
+ #endif
+           if (tftp_cancel)
+           {
+-               if (from.sin_addr.s_addr == 0)
++               if (from.ss_family == 0)
+                     state = S_ABORT;
+                else
                 {
-+#ifdef SOL_IP
-                     if (cmsg->cmsg_level == SOL_IP
-                         && cmsg->cmsg_type == IP_PKTINFO)
+@@ -298,7 +303,7 @@
+                else
+                     state = S_WAIT_PACKET;
+ 
+-               sa.sin_port = 0; /* must be set to 0 before the fist call to
++               sockaddr_set_port(&sa, 0); /* must be set to 0 before the fist call to
+                                    tftp_get_packet, but it was set before the
+                                    call to tftp_send_request with the server port */
+                break;
+@@ -351,10 +356,10 @@
+                          break;
+                     }
+                     /* Can only receive this error from unicast */
+-                    if (sa.sin_addr.s_addr != from.sin_addr.s_addr)
++                    if (!sockaddr_equal_addr(&sa, &from))
                      {
-                          pktinfo = (struct in_pktinfo *)CMSG_DATA(cmsg);
-                          sa_to->sin_addr = pktinfo->ipi_addr;
+                          fprintf(stderr, "mtftp: error packet discarded from <%s>.\n",
+-                                 inet_ntoa(from.sin_addr));
++                                 sockaddr_print_addr(&from, from_str, sizeof(from_str)));
+                          break;
                      }
-+#endif                    
+                     /* packet is for us */
+@@ -367,7 +372,7 @@
+                     /* Specification state that server source IP must matches, but
+                        port is not a requierement (anyway we may not know the source
+                        port yet) */
+-                    if (sa.sin_addr.s_addr == from.sin_addr.s_addr)
++                    if (sockaddr_equal_addr(&sa, &from))
+                     {
+                          if (mode != LISTEN)
+                          {
+@@ -380,7 +385,7 @@
+                                         fprintf(stderr,
+                                                 "mtftp: unexpected unicast packet from <%s>,"
+                                                 " continuing\n",
+-                                                inet_ntoa(from.sin_addr));
++                                                sockaddr_print_addr(&from, from_str, sizeof(from_str)));
+                                    else
+                                         mode = RECEIVE;
+                               }
+@@ -404,7 +409,7 @@
+                               {
+                                    fprintf(stderr,
+                                            "mtftp: unexpected unicast packet from <%s>.\n",
+-                                           inet_ntoa(from.sin_addr));
++                                           sockaddr_print_addr(&from, from_str, sizeof(from_str)));
+                                    break;
+                               }
+                          }
+@@ -412,7 +417,7 @@
+                     else
+                     {
+                          fprintf(stderr, "mtftp: unexpected packet from <%s>\n",
+-                                 inet_ntoa(from.sin_addr));
++                                 sockaddr_print_addr(&from, from_str, sizeof(from_str)));
+                          break;
+                     }
+                     number_of_timeout = 0;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/atftp/atftp-debian.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/atftp/atftp.spec?r1=1.27&r2=1.28&f=u



More information about the pld-cvs-commit mailing list