OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 23-Mar-2006 22:27:03
Branch: HEAD Handle: 2006032321270300
Modified files:
openpkg-src/spegla spegla.patch spegla.spec
Log:
apply a patch from the FreeBSD ports tree which fixes reply code
handling for USER command
Summary:
Revision Changes Path
1.2 +97 -4 openpkg-src/spegla/spegla.patch
1.24 +1 -1 openpkg-src/spegla/spegla.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/spegla/spegla.patch
============================================================================
$ cvs diff -u -r1.1 -r1.2 spegla.patch
--- openpkg-src/spegla/spegla.patch 14 Jun 2002 12:48:53 -0000 1.1
+++ openpkg-src/spegla/spegla.patch 23 Mar 2006 21:27:03 -0000 1.2
@@ -1,5 +1,6 @@
---- e_err.c.orig Sun May 14 23:39:39 2000
-+++ e_err.c Thu Feb 1 15:38:37 2001
+Index: e_err.c
+--- e_err.c.orig 2000-05-14 16:39:39 +0200
++++ e_err.c 2006-03-23 22:22:39 +0100
@@ -115,6 +115,7 @@
}
@@ -8,8 +9,100 @@
len -= res;
p += res;
---- spegla.c.orig Sat May 27 22:38:14 2000
-+++ spegla.c Thu Feb 1 15:39:24 2001
+Index: jftp.c
+--- jftp.c.orig 2000-05-27 15:47:43 +0200
++++ jftp.c 2006-03-23 22:22:39 +0100
+@@ -40,6 +40,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+
++#include <ctype.h>
+ #include <setjmp.h>
+ #include <signal.h>
+ #include <stdio.h>
+@@ -220,6 +221,7 @@
+ int ftp_status, eol, i, islongtext;
+ ssize_t done, res, size, pos;
+ char *nfmt;
++ char rescode[5];
+
+ if (*fmt != ' ') {
+ if ((nfmt = alloca(strlen(fmt) + 3)) == NULL) {
+@@ -267,12 +269,28 @@
+ pos += done;
+ if(eol) {
+ ftp_status=0;
+- res = sscanf(c->ftp_buf, "%3d", &ftp_status);
+- if ((res == 1) && (ftp_status >= 100) && (ftp_status <=
999)) {
+- /* We have a line that contains a valid reply
code */
+
+- /* This may be the start of a multi line reply
*/
+- islongtext = (c->ftp_buf[3] == '-');
++ /* We are interested in the first 4 bytes */
++ (void)memset(rescode, '\0', sizeof(rescode));
++ (void)memcpy(rescode, c->ftp_buf, sizeof(rescode) - 1);
++
++ if (isdigit(rescode[0])
++ && isdigit(rescode[1])
++ && isdigit(rescode[2])) {
++ res = sscanf(rescode, "%3d", &ftp_status);
++
++ E_LOGX_1(3, "ftp_status: %d", ftp_status);
++ E_LOGX_1(3, "c->ftp_buf: %s", c->ftp_buf);
++
++ if ((rescode[3] == '-' || rescode[3] == ' ')
++ && (res == 1)) {
++ islongtext = (rescode[3] == '-');
++ if (ftp_status < 100) {
++ E_LOGX_1(1, "%s", c->ftp_buf);
++ c->ftp_resp = JFTP_ERR;
++ return -1;
++ }
++ }
+ }
+ if(islongtext) {
+ size = sizeof(c->ftp_buf);
+@@ -423,17 +441,22 @@
+ c->ftp_resp = JFTP_ERR;
+ return -1;
+ }
+- if (ftp_req(c, "user %s", c->ftp_user_name) < 0 || c->ftp_resp != 331) {
++ if (ftp_req(c, "user %s", c->ftp_user_name) < 0
++ || (c->ftp_resp != 331 && c->ftp_resp != 230)) {
+ E_LOGX_1(0, "Username %s: failed", c->ftp_user_name);
+ FD_CLOSE(c->ftp_com);
+ c->ftp_resp = JFTP_ERR;
+ return -1;
+ }
+- if (ftp_req(c, "pass %s", c->ftp_password) < 0 || c->ftp_resp != 230) {
+- E_LOGX(0, "Password xxxxx: failed");
+- FD_CLOSE(c->ftp_com);
+- c->ftp_resp = JFTP_ERR;
+- return -1;
++ /* USER command can respond 230 immediately in some cases */
++ if (c->ftp_resp != 230) {
++ if (ftp_req(c, "pass %s", c->ftp_password) < 0
++ || c->ftp_resp != 230) {
++ E_LOGX(0, "Password xxxxx: failed");
++ FD_CLOSE(c->ftp_com);
++ c->ftp_resp = JFTP_ERR;
++ return -1;
++ }
+ }
+ c->ftp_resp = 0;
+ if (ftp_req(c, "TYPE I") < 0 || c->ftp_resp != 200) {
+@@ -836,7 +859,7 @@
+ /* Late versions of wu-ftpd does some kind of recursive
+ * listing if only a '.' is given as directory.
+ */
+- if (strcmp(dir, ".") == 0)
++ if ((strcmp(dir, ".") == 0) || !*dir)
+ res = ftp_req(c, "list %s", flags);
+ else
+ res = ftp_req(c, "list %s %s", flags, dir);
+Index: spegla.c
+--- spegla.c.orig 2000-05-27 15:38:14 +0200
++++ spegla.c 2006-03-23 22:22:39 +0100
@@ -728,7 +728,7 @@
#ifdef ULTRIX
if ((f.fd_req.bfreen * 1024) < minfree)
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/spegla/spegla.spec
============================================================================
$ cvs diff -u -r1.23 -r1.24 spegla.spec
--- openpkg-src/spegla/spegla.spec 1 Jan 2006 13:22:37 -0000 1.23
+++ openpkg-src/spegla/spegla.spec 23 Mar 2006 21:27:03 -0000 1.24
@@ -33,7 +33,7 @@
Group: Network
License: BSD
Version: 1.1p4
-Release: 20040604
+Release: 20060323
# package options
%option with_ipv6 no
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]