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