[packages/lftp] - up to 4.5.3
arekm
arekm at pld-linux.org
Sat Jul 12 23:50:18 CEST 2014
commit 1cb57b8d8916075814adfbe0e040f219204cff49
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sat Jul 12 23:50:13 2014 +0200
- up to 4.5.3
lftp-git.patch | 398 ---------------------------------------------------------
lftp.spec | 10 +-
2 files changed, 4 insertions(+), 404 deletions(-)
---
diff --git a/lftp.spec b/lftp.spec
index cf2dacb..5a12aba 100644
--- a/lftp.spec
+++ b/lftp.spec
@@ -22,17 +22,16 @@ Summary(pl.UTF-8): Zaawansowany klient FTP/HTTP
Summary(pt_BR.UTF-8): Sofisticado programa de transferência de arquivos (cliente FTP/HTTP)
Summary(zh_CN.UTF-8): lftp 客户端程序
Name: lftp
-Version: 4.5.2
-Release: 2
+Version: 4.5.3
+Release: 1
License: GPL v3+
Group: Applications/Networking
Source0: http://lftp.yar.ru/ftp/%{name}-%{version}.tar.xz
-# Source0-md5: d26ab59a7402048d4b382e720748aac6
+# Source0-md5: dcc20675777a4931116491534463bf46
Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-man-pages.tar.bz2
# Source1-md5: cdad8fb5342eebd9916eccefc98a855b
Source2: %{name}.desktop
Source3: %{name}-icon.png
-Patch100: %{name}-git.patch
Patch0: %{name}-makefile.patch
Patch1: %{name}-m4.patch
Patch2: aliases.patch
@@ -91,11 +90,10 @@ o arquivo FEATURES para uma lista mais detalhada.
%prep
%setup -q
-%patch100 -p1
%patch0 -p1
%patch1 -p1
%patch2 -p1
-%patch3 -p1
+#%patch3 -p1
%patch4 -p1
%patch5 -p1
diff --git a/lftp-git.patch b/lftp-git.patch
deleted file mode 100644
index 93d8f10..0000000
--- a/lftp-git.patch
+++ /dev/null
@@ -1,398 +0,0 @@
-diff --git a/NEWS b/NEWS
-index 70ab658..e0198df 100644
---- a/NEWS
-+++ b/NEWS
-@@ -2,7 +2,7 @@ Version 4.5.2 - 2014-06-11
-
- * fixed a coredump on startup when compiled with certain gcc versions.
- * mkdir -q option for quiet operation.
--* glob --exists and --not-exist options.
-+* glob --exist and --not-exist options.
- * improved torrent status, show piece availability statistics.
- * remove unconnectable torrent peers on trackerless torrents.
-
-diff --git a/src/DHT.cc b/src/DHT.cc
-index dc7fdf7..069257e 100644
---- a/src/DHT.cc
-+++ b/src/DHT.cc
-@@ -119,7 +119,7 @@ int DHT::Do()
- if(nodes.count()>MAX_NODES) {
- // remove some nodes.
- int to_remove=nodes.count()-MAX_NODES;
-- for(Node *n=nodes.each_begin(); n; n=nodes.each_next()) {
-+ for(Node *n=nodes.each_begin(); n && to_remove>0; n=nodes.each_next()) {
- if(!n->IsGood() && !n->in_routes) {
- LogNote(9,"removing node %s (not good)",n->GetName());
- RemoveNode(n);
-@@ -518,6 +518,10 @@ void DHT::HandlePacket(BeNode *p,const sockaddr_u& src)
- LogError(2,"got DHT reply with unknown `t' from %s",src.to_string());
- return;
- }
-+ if(req->addr!=src) {
-+ LogError(2,"got DHT reply from %s instead of %s",src.to_string(),req->addr.to_string());
-+ return;
-+ }
-
- const xstring& q=req->data->lookup_str("q");
- if(y.eq("r")) {
-@@ -747,10 +751,6 @@ DHT::Node *DHT::FoundNode(const xstring& id,const sockaddr_u& a,bool responded,S
- void DHT::RemoveNode(Node *n)
- {
- RemoveRoute(n);
-- for(const Request *r=sent_req.each_begin(); r; r=sent_req.each_next()) {
-- if(r->addr==n->addr)
-- sent_req.remove(sent_req.each_key());
-- }
- node_by_addr.remove(n->addr.compact());
- nodes.remove(n->id);
- }
-diff --git a/src/Http.cc b/src/Http.cc
-index bcf5961..dffb1c2 100644
---- a/src/Http.cc
-+++ b/src/Http.cc
-@@ -869,11 +869,6 @@ void Http::HandleHeaderLine(const char *name,const char *value)
- if(bs<0) // try to workaround broken servers
- bs+=0x100000000LL;
- body_size=bs;
-- if(pos==0 && mode!=STORE && mode!=MAKE_DIR && !inflate)
-- entity_size=body_size;
-- if(pos==0 && opt_size && H_2XX(status_code) && !inflate)
-- *opt_size=body_size;
--
- if(mode==ARRAY_INFO && H_2XX(status_code)
- && xstrcmp(last_method,"PROPFIND"))
- {
-@@ -967,19 +962,7 @@ void Http::HandleHeaderLine(const char *name,const char *value)
- return;
-
- case_hh("Content-Encoding",'C')
-- if(!QueryBool("decode",hostname))
-- return;
-- if(!strcmp(value,"deflate")
-- || !strcmp(value,"gzip") || !strcmp(value,"compress")
-- || !strcmp(value,"x-gzip") || !strcmp(value,"x-compress")) {
-- // inflated size if unknown beforehand
-- entity_size=NO_SIZE;
-- if(opt_size)
-- *opt_size=NO_SIZE;
-- // start the inflation
-- inflate=new DirectedBuffer(DirectedBuffer::GET);
-- inflate->SetTranslator(new DataInflator());
-- }
-+ content_encoding.set(value);
- return;
-
- case_hh("Accept-Ranges",'A')
-@@ -1712,6 +1695,26 @@ int Http::Do()
- return MOVED;
- }
-
-+ // Many servers send application/x-gzip with x-gzip encoding,
-+ // don't decode in such a case.
-+ if(CompressedContentEncoding() && !CompressedContentType()
-+ && QueryBool("decode",hostname)) {
-+ // inflated size is unknown beforehand
-+ entity_size=NO_SIZE;
-+ if(opt_size)
-+ *opt_size=NO_SIZE;
-+ // start the inflation
-+ inflate=new DirectedBuffer(DirectedBuffer::GET);
-+ inflate->SetTranslator(new DataInflator());
-+ }
-+ // sometimes it's possible to derive entity size from body size.
-+ if(entity_size==NO_SIZE && body_size!=NO_SIZE
-+ && pos==0 && mode!=STORE && mode!=MAKE_DIR && !inflate) {
-+ entity_size=body_size;
-+ if(opt_size && H_2XX(status_code))
-+ *opt_size=body_size;
-+ }
-+
- LogNote(9,_("Receiving body..."));
- rate_limit=new RateLimit(hostname);
- if(real_pos<0) // assume Range: did not work
-@@ -2580,6 +2583,27 @@ Http::atotm (const char *time_string)
- return ut;
- }
-
-+bool Http::IsCompressed(const char *s)
-+{
-+ static const char *const values[] = {
-+ "x-gzip", "gzip", "deflate", "compress", "x-compress", NULL
-+ };
-+ for(const char *const *v=values; *v; v++)
-+ if(!strcmp(s,*v))
-+ return true;
-+ return false;
-+}
-+
-+bool Http::CompressedContentEncoding() const
-+{
-+ return content_encoding && IsCompressed(content_encoding);
-+}
-+bool Http::CompressedContentType() const
-+{
-+ static const char app[]="application/";
-+ return entity_content_type && entity_content_type.begins_with(app)
-+ && IsCompressed(entity_content_type+sizeof(app)-1);
-+}
-
- #include "modconfig.h"
- #ifdef MODULE_PROTO_HTTP
-diff --git a/src/Http.h b/src/Http.h
-index 131254d..c481ec9 100644
---- a/src/Http.h
-+++ b/src/Http.h
-@@ -140,6 +140,10 @@ class Http : public NetAccess
-
- Ref<DirectedBuffer> inflate;
- SMTaskRef<IOBuffer> propfind;
-+ xstring_c content_encoding;
-+ static bool IsCompressed(const char *s);
-+ bool CompressedContentEncoding() const;
-+ bool CompressedContentType() const;
-
- bool no_ranges;
- bool seen_ranges_bytes;
-diff --git a/src/Torrent.cc b/src/Torrent.cc
-index 50b1049..ffe6433 100644
---- a/src/Torrent.cc
-+++ b/src/Torrent.cc
-@@ -1565,7 +1565,7 @@ void Torrent::ScanPeers() {
- const char *blacklist_time="2h";
- if(peer->Failed()) {
- LogError(2,"peer %s failed: %s",peer->GetName(),peer->ErrorText());
-- } else if(peer->Disconnected()) {
-+ } else if(peer->Disconnected() && peer->ActivityTimedOut()) {
- LogNote(4,"peer %s disconnected",peer->GetName());
- } else if(peer->myself) {
- LogNote(4,"removing myself-connected peer %s",peer->GetName());
-@@ -1574,6 +1574,7 @@ void Torrent::ScanPeers() {
- LogNote(4,"removing duplicate peer %s",peer->GetName());
- } else if(complete && peer->Seed()) {
- LogNote(4,"removing unneeded peer %s (%s)",peer->GetName(),peers[i]->Status());
-+ blacklist_time="1d";
- } else {
- // keep the peer.
- continue;
-@@ -3548,8 +3549,7 @@ void Torrent::Dispatch(const xstring& info_hash,int sock,const sockaddr_u *remot
- {
- Torrent *t=FindTorrent(info_hash);
- if(!t) {
-- LogError(3,"peer %s sent unknown info_hash=%s in handshake",
-- remote_addr->to_string(),info_hash.hexdump());
-+ LogError(3,_("peer sent unknown info_hash=%s in handshake"),info_hash.hexdump());
- close(sock);
- Delete(recv_buf);
- return;
-@@ -3560,7 +3560,8 @@ void Torrent::Dispatch(const xstring& info_hash,int sock,const sockaddr_u *remot
- TorrentDispatcher::TorrentDispatcher(int s,const sockaddr_u *a)
- : sock(s), addr(*a),
- recv_buf(new IOBufferFDStream(new FDStream(sock,"<input-socket>"),IOBuffer::GET)),
-- timeout_timer(60)
-+ timeout_timer(60),
-+ peer_name(addr.to_xstring())
- {
- }
- TorrentDispatcher::~TorrentDispatcher()
-diff --git a/src/Torrent.h b/src/Torrent.h
-index 0015311..a9943c6 100644
---- a/src/Torrent.h
-+++ b/src/Torrent.h
-@@ -785,11 +785,12 @@ class TorrentDispatcher : public SMTask, protected ProtoLog
- const sockaddr_u addr;
- SMTaskRef<IOBuffer> recv_buf;
- Timer timeout_timer;
-+ xstring_c peer_name;
- public:
- TorrentDispatcher(int s,const sockaddr_u *a);
- ~TorrentDispatcher();
- int Do();
-- const char *GetLogContext() { return "torrent"; }
-+ const char *GetLogContext() { return peer_name; }
- };
-
- #include "Job.h"
-diff --git a/src/ftpclass.cc b/src/ftpclass.cc
-index aa4cf6a..51114b5 100644
---- a/src/ftpclass.cc
-+++ b/src/ftpclass.cc
-@@ -952,6 +952,7 @@ Ftp::Connection::Connection(const char *c)
- : closure(c), send_cmd_buffer(DirectedBuffer::PUT)
- {
- control_sock=-1;
-+ telnet_layer_send=0;
- data_sock=-1;
- aborted_data_sock=-1;
- #if USE_SSL
-@@ -1559,6 +1560,7 @@ int Ftp::Do()
- TuneConnectionAfterFEAT();
- SendSiteGroup();
- SendSiteIdle();
-+ SendSiteCommands();
-
- if(!home_auto)
- {
-@@ -2648,6 +2650,23 @@ void Ftp::SendSiteGroup()
- conn->SendCmd2("SITE GROUP",group);
- expect->Push(Expect::IGNORE);
- }
-+void Ftp::SendSiteCommands()
-+{
-+ const char *site_commands=QueryStringWithUserAtHost("site");
-+ if(!site_commands)
-+ return;
-+ char *cmd=alloca_strdup(site_commands);
-+ for(;;) {
-+ char *sep=strstr(cmd," ");
-+ if(sep)
-+ *sep=0;
-+ conn->SendCmd2("SITE",cmd);
-+ expect->Push(Expect::IGNORE);
-+ if(!sep)
-+ break;
-+ cmd=sep+2;
-+ }
-+}
-
- void Ftp::SendArrayInfoRequests()
- {
-diff --git a/src/ftpclass.h b/src/ftpclass.h
-index c83c208..d762086 100644
---- a/src/ftpclass.h
-+++ b/src/ftpclass.h
-@@ -327,6 +327,7 @@ private:
- void SendSiteIdle();
- void SendAcct();
- void SendSiteGroup();
-+ void SendSiteCommands();
- void SendUTimeRequest();
- void SendAuth(const char *auth);
- void TuneConnectionAfterFEAT();
-diff --git a/src/network.h b/src/network.h
-index 441f3ef..22af2e9 100644
---- a/src/network.h
-+++ b/src/network.h
-@@ -74,9 +74,12 @@ union sockaddr_u
- #endif
- return sizeof(*this);
- }
-- int operator==(const sockaddr_u &o) const {
-+ bool operator==(const sockaddr_u &o) const {
- return !memcmp(this,&o,addr_len());
- }
-+ bool operator!=(const sockaddr_u &o) const {
-+ return memcmp(this,&o,addr_len());
-+ }
- const char *address() const;
- int port() const;
- int bind_to(int s) const { return bind(s,&sa,addr_len()); }
-diff --git a/src/resource.cc b/src/resource.cc
-index 6f63ed7..4aa071a 100644
---- a/src/resource.cc
-+++ b/src/resource.cc
-@@ -181,6 +181,7 @@ static ResType lftp_vars[] = {
- {"ftp:fxp-passive-source", "no", ResMgr::BoolValidate,ResMgr::NoClosure},
- {"ftp:fxp-passive-sscn", "yes", ResMgr::BoolValidate,ResMgr::NoClosure},
- {"ftp:home", "", 0,0},
-+ {"ftp:site" "", 0,0},
- {"ftp:site-group", "", 0,0},
- {"ftp:lang", "", 0,0},
- {"ftp:list-empty-ok", "no", 0,0},
-diff --git a/src/xstring.cc b/src/xstring.cc
-index 76f6d40..9eadeca 100644
---- a/src/xstring.cc
-+++ b/src/xstring.cc
-@@ -24,37 +24,6 @@
- #include "trio.h"
- #include "c-ctype.h"
-
--int xstrcmp(const char *s1,const char *s2)
--{
-- if(s1==s2)
-- return 0;
-- if(s1==0 || s2==0)
-- return 1;
-- return strcmp(s1,s2);
--}
--int xstrncmp(const char *s1,const char *s2,size_t len)
--{
-- if(s1==s2 || len==0)
-- return 0;
-- if(s1==0 || s2==0)
-- return 1;
-- return strncmp(s1,s2,len);
--}
--int xstrcasecmp(const char *s1,const char *s2)
--{
-- if(s1==s2)
-- return 0;
-- if(s1==0 || s2==0)
-- return 1;
-- return strcasecmp(s1,s2);
--}
--size_t xstrlen(const char *s)
--{
-- if(s==0)
-- return 0;
-- return strlen(s);
--}
--
- void xstring::get_space(size_t s)
- {
- get_space2(s,32);
-diff --git a/src/xstring.h b/src/xstring.h
-index 4dee3fb..264baf6 100644
---- a/src/xstring.h
-+++ b/src/xstring.h
-@@ -62,10 +62,36 @@ CDECL int vsnprintf(char *,size_t,const char *,va_list);
- CDECL int snprintf(char *,size_t,const char *,...);
- #endif
-
--int xstrcmp(const char *s1,const char *s2);
--int xstrncmp(const char *s1,const char *s2,size_t len);
--int xstrcasecmp(const char *s1,const char *s2);
--size_t xstrlen(const char *s);
-+static inline int xstrcmp(const char *s1,const char *s2)
-+{
-+ if(s1==s2)
-+ return 0;
-+ if(s1==0 || s2==0)
-+ return 1;
-+ return strcmp(s1,s2);
-+}
-+static inline int xstrncmp(const char *s1,const char *s2,size_t len)
-+{
-+ if(s1==s2 || len==0)
-+ return 0;
-+ if(s1==0 || s2==0)
-+ return 1;
-+ return strncmp(s1,s2,len);
-+}
-+static inline int xstrcasecmp(const char *s1,const char *s2)
-+{
-+ if(s1==s2)
-+ return 0;
-+ if(s1==0 || s2==0)
-+ return 1;
-+ return strcasecmp(s1,s2);
-+}
-+static inline size_t xstrlen(const char *s)
-+{
-+ if(s==0)
-+ return 0;
-+ return strlen(s);
-+}
-
- #include <stdarg.h>
- #include "xmalloc.h"
-@@ -112,8 +138,8 @@ public:
- void truncate(size_t n=0) { if(buf) buf[n]=0; }
- char *borrow() { return replace_value(buf,(char*)0); }
- bool begins_with(const char *s) const { return !strncmp(buf,s,strlen(s)); };
-- bool eq(const char *s) { return !xstrcmp(buf,s); }
-- bool ne(const char *s) { return !eq(s); }
-+ bool eq(const char *s) const { return !xstrcmp(buf,s); }
-+ bool ne(const char *s) const { return !eq(s); }
- size_t length() const { return xstrlen(buf); }
- void set_length(size_t n) { if(buf) buf[n]=0; }
-
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/lftp.git/commitdiff/1cb57b8d8916075814adfbe0e040f219204cff49
More information about the pld-cvs-commit
mailing list