Steve Holme [Sun, 12 Jan 2014 16:44:59 +0000 (16:44 +0000)]
examples: Added comments to SMTP multi example based on other MAIL examples
Steve Holme [Sun, 12 Jan 2014 16:32:48 +0000 (16:32 +0000)]
examples: Removed user information and TLS setup from SMTP multi example
Simplified the SMTP multi example as this example should demonstrate
the differences the easy and multi interfaces rather than introduce new
concepts such as user authentication and TLS which are shown in the TLS
and SSL examples.
Steve Holme [Sun, 12 Jan 2014 15:44:51 +0000 (15:44 +0000)]
examples: Updated SMTP MAIL example to return libcurl result code
Steve Holme [Sun, 12 Jan 2014 15:30:45 +0000 (15:30 +0000)]
examples: Synchronised comments between SMTP MAIL examples
Steve Holme [Sun, 12 Jan 2014 15:20:25 +0000 (15:20 +0000)]
examples: Updated SMTP MAIL example to use a read function for data
Updated to read data from a callback rather than from stdio as this is
more realistic to most use cases.
Daniel Stenberg [Fri, 10 Jan 2014 23:05:19 +0000 (00:05 +0100)]
OpenSSL: deselect weak ciphers by default
By default even recent versions of OpenSSL support and accept both
"export strength" ciphers, small-bitsize ciphers as well as downright
deprecated ones.
This change sets a default cipher set that avoids the worst ciphers, and
subsequently makes https://www.howsmyssl.com/a/check no longer grade
curl/OpenSSL connects as 'Bad'.
Bug: http://curl.haxx.se/bug/view.cgi?id=1323
Reported-by: Jeff Hodges
Daniel Stenberg [Sun, 5 Jan 2014 15:38:18 +0000 (16:38 +0100)]
multi: remove MULTI_TIMEOUT_INACCURACY
With the recently added timeout "reminder" functionality, there's no
reason left for us to execute timeout code before the time is
ripe. Simplifies the handling too.
This will make the *TIMEOUT and *CONNECTTIMEOUT options more accurate
again, which probably is most important when the *_MS versions are used.
In multi_socket, make sure to update 'now' after having handled activity
on a socket.
Steve Holme [Sat, 11 Jan 2014 14:33:33 +0000 (14:33 +0000)]
Makefile.dist: Added support for VC7
Currently VC7 and VC7.1 builds have to be ran with the VC variable set
to vc6 which is not only inconsistent with the nmake winbuild system
but also with newer versions of Visual Studio supported by this file.
Note: This doesn't break the build for anyone still running with the
VC variable set to vc6 or not set (which defaults to vc6).
Steve Holme [Fri, 10 Jan 2014 20:04:27 +0000 (20:04 +0000)]
RELEASE-NOTES: Synced with
980659a2caa285
Daniel Stenberg [Wed, 8 Jan 2014 07:23:13 +0000 (08:23 +0100)]
multi_socket: remind app if timeout didn't run
BACKGROUND:
We have learned that on some systems timeout timers are inaccurate and
might occasionally fire off too early. To make the multi_socket API work
with this, we made libcurl execute timeout actions a bit early too if
they are within our MULTI_TIMEOUT_INACCURACY. (added in commit
2c72732ebf, present since 7.21.0)
Switching everything to the multi API made this inaccuracy problem
slightly more notable as now everyone can be affected.
Recently (commit
21091549c02) we tweaked that inaccuracy value to make
timeouts more accurate and made it platform specific. We also figured
out that we have code at places that check for fixed timeout values so
they MUST NOT run too early as then they will not trigger at all (see
commit
be28223f35 and
a691e044705) - so there are definitately problems
with running timeouts before they're supposed to run. (We've handled
that so far by adding the inaccuracy margin to those specific timeouts.)
The libcurl multi_socket API tells the application with a callback that
a timeout expires in N milliseconds (and it explicitly will not tell it
again for the same timeout), and the application is then supposed to
call libcurl when that timeout expires. When libcurl subsequently gets
called with curl_multi_socket_action(...CURL_SOCKET_TIMEOUT...), it
knows that the application thinks the timeout expired - and alas, if it
is within the inaccuracy level libcurl will run code handling that
handle.
If the application says CURL_SOCKET_TIMEOUT to libcurl and _isn't_
within the inaccuracy level, libcurl will not consider the timeout
expired and it will not tell the application again since the timeout
value is still the same.
NOW:
This change introduces a modified behavior here. If the application says
CURL_SOCKET_TIMEOUT and libcurl finds no timeout code to run, it will
inform the application about the timeout value - *again* even if it is
the same timeout that it already told about before (although libcurl
will of course tell it the updated time so that it'll still get the
correct remaining time). This way, we will not risk that the application
believes it has done its job and libcurl thinks the time hasn't come yet
to run any code and both just sit waiting. This also allows us to
decrease the MULTI_TIMEOUT_INACCURACY margin, but that will be handled
in a separate commit.
A repeated timeout update to the application risk that the timeout will
then fire again immediately and we have what basically is a busy-loop
until the time is fine even for libcurl. If that becomes a problem, we
need to address it.
Daniel Stenberg [Fri, 10 Jan 2014 07:37:43 +0000 (08:37 +0100)]
threaded-resolver: never use NULL hints with getaddrinfo
The net effect of this bug as it appeared to users, would be that
libcurl would timeout in the connect phase.
When disabling IPv6 use but still using getaddrinfo, libcurl would
wrongly not init the "hints" struct field in init_thread_sync() which
would subsequently lead to a getaddrinfo() invoke with a zeroed hints
with ai_socktype set to 0 instead of SOCK_STREAM. This would lead to
different behaviors on different platforms but basically incorrect
output.
This code was introduced in
483ff1ca75cbea, released in curl 7.20.0.
This bug became a problem now due to the happy eyeballs code and how
libcurl now traverses the getaddrinfo() results differently.
Bug: http://curl.haxx.se/mail/lib-2014-01/0061.html
Reported-by: Fabian Frank
Debugged-by: Fabian Frank
Nick Zitzmann [Thu, 9 Jan 2014 23:53:29 +0000 (17:53 -0600)]
darwinssl: un-break Leopard build after PKCS#12 change
It turns out errSecDecode wasn't defined in Leopard's headers. So
we use the enum's value instead.
Bug: http://curl.haxx.se/mail/lib-2013-12/0150.html
Reported by: Abram Pousada
Daniel Stenberg [Wed, 8 Jan 2014 22:37:27 +0000 (23:37 +0100)]
Curl_updateconninfo: don't do anything for UDP "connections"
getpeername() doesn't work for UDP sockets since they're not connected
Reported-by: Priyanka Shah
Bug: http://curl.haxx.se/mail/archive-2014-01/0016.html
Daniel Stenberg [Wed, 8 Jan 2014 22:19:57 +0000 (23:19 +0100)]
info: remove debug output
Removed some of the infof() calls that were added with the recent
pipeline improvements but they're not useful to the vast majority of
readers and the pipelining seems to fundamentaly work - the debugging
outputs can easily be added there if debugging these functions is needed
again.
Daniel Stenberg [Wed, 8 Jan 2014 12:20:29 +0000 (13:20 +0100)]
runtests: disable memory tracking with threaded resolver
The built-in memory debug system doesn't work with multi-threaded use so
instead of causing annoying false positives, disable the memory tracking
if the threaded resolver is used.
Daniel Stenberg [Wed, 8 Jan 2014 08:41:02 +0000 (09:41 +0100)]
trynextip: fix build for non-IPV6 capable systems
AF_INET6 may not exist then
Patched-by: Iida Yosiaki
Bug: http://curl.haxx.se/bug/view.cgi?id=1322
Steve Holme [Wed, 8 Jan 2014 00:30:33 +0000 (00:30 +0000)]
makefile: Added support for VC12
Steve Holme [Wed, 8 Jan 2014 00:15:30 +0000 (00:15 +0000)]
makefile: Added support for VC11
Steve Holme [Wed, 8 Jan 2014 12:05:48 +0000 (12:05 +0000)]
Daniel Stenberg [Tue, 7 Jan 2014 22:51:01 +0000 (23:51 +0100)]
mk-ca-bundle.1: document -d
Steve Holme [Tue, 7 Jan 2014 22:12:57 +0000 (22:12 +0000)]
RELEASE-NOTES: Synced with
8ae35102c43d8d
Daniel Stenberg [Tue, 7 Jan 2014 08:33:54 +0000 (09:33 +0100)]
ConnectionExists: fix NTLM check for new connection
When the requested authentication bitmask includes NTLM, we cannot
re-use a connection for another username/password as we then risk
re-using NTLM (connection-based auth).
This has the unfortunate downside that if you include NTLM as a possible
auth, you cannot re-use connections for other usernames/passwords even
if NTLM doesn't end up the auth type used.
Reported-by: Paras S
Patched-by: Paras S
Bug: http://curl.haxx.se/mail/lib-2014-01/0046.html
Steve Holme [Sun, 5 Jan 2014 22:59:29 +0000 (22:59 +0000)]
examples: Added required libcurl version information to SMTP examples
Daniel Stenberg [Sun, 5 Jan 2014 22:53:26 +0000 (23:53 +0100)]
mk-ca-bundle.pl: avoid warnings with -d without parameter
Leif W [Sun, 5 Jan 2014 22:37:26 +0000 (23:37 +0100)]
mk-ca-bundle: introduces -d and warns about using this script
Steve Holme [Sun, 5 Jan 2014 21:13:12 +0000 (21:13 +0000)]
Makefile: Added missing WinSSL and x64 configurations
Marc Hoersken [Sun, 5 Jan 2014 19:17:04 +0000 (20:17 +0100)]
docs/INTERNALS: follow up fix for
11e8066 and
92b9ae5
Marc Hoersken [Sun, 5 Jan 2014 19:13:55 +0000 (20:13 +0100)]
packages: follow up fix for
a47c142,
11e8066 and
92b9ae5
Marc Hoersken [Sun, 5 Jan 2014 19:01:33 +0000 (20:01 +0100)]
multi.c: fix possible dereference of null pointer
Steve Holme [Sun, 5 Jan 2014 17:50:14 +0000 (17:50 +0000)]
Examples: Renamed SMTP MAIL example to match other email examples
Steve Holme [Sun, 5 Jan 2014 14:40:58 +0000 (14:40 +0000)]
examples: Added POP3 TLS example
Steve Holme [Sun, 5 Jan 2014 14:21:45 +0000 (14:21 +0000)]
examples: Added IMAP NOOP example
Steve Holme [Sun, 5 Jan 2014 14:02:44 +0000 (14:02 +0000)]
examples: Added POP3 NOOP example
Steve Holme [Sun, 5 Jan 2014 13:46:16 +0000 (13:46 +0000)]
pop3-stat.c: Corrected small typo from commit
91d62e9abd761c
Steve Holme [Sun, 5 Jan 2014 13:40:55 +0000 (13:40 +0000)]
examples: Added POP3 STAT example
Steve Holme [Sun, 5 Jan 2014 13:20:40 +0000 (13:20 +0000)]
examples: Added POP3 TOP example
Steve Holme [Sun, 5 Jan 2014 13:00:18 +0000 (13:00 +0000)]
examples: Added POP3 DELE example
Steve Holme [Sun, 5 Jan 2014 12:40:50 +0000 (12:40 +0000)]
examples: Added POP3 UIDL example
Steve Holme [Sun, 5 Jan 2014 12:20:26 +0000 (12:20 +0000)]
examples: Added POP3 RETR example
Steve Holme [Sun, 5 Jan 2014 11:55:10 +0000 (11:55 +0000)]
examples: Added return of error code in POP3 examples
Steve Holme [Sun, 5 Jan 2014 11:22:39 +0000 (11:22 +0000)]
runtests.pl: Updated copyright year after edit from
d718abd968aeb4
Steve Holme [Sun, 5 Jan 2014 10:48:54 +0000 (10:48 +0000)]
examples: Reworked POP3 examples for additional upcoming POP3 examples
Steve Holme [Sun, 5 Jan 2014 10:32:47 +0000 (10:32 +0000)]
examples: Added SMTP SSL example
Steve Holme [Sun, 5 Jan 2014 10:16:22 +0000 (10:16 +0000)]
examples: Added IMAP SSL and TLS examples
Marc Hoersken [Sun, 5 Jan 2014 01:22:09 +0000 (02:22 +0100)]
runtests.pl: check for tstunnel command on Windows
The Windows console version of stunnel is called "tstunnel", while
running "stunnel" on Windows spawns a new console window which
cannot be handled by the testsuite.
Marc Hoersken [Sat, 4 Jan 2014 23:09:20 +0000 (00:09 +0100)]
testcurl.pl: always show the last 5 commits even with --nogitpull
Daniel Stenberg [Sat, 4 Jan 2014 22:39:30 +0000 (23:39 +0100)]
ftp tests: provide LIST responses in the test file itself
Previously LIST always returned a fixed hardcoded list that the ftp
server code knew about, mostly since the server didn't get any test case
number in the LIST scenario. Starting now, doing a CWD to a directory
named test-[number] will make the test server remember that number and
consider it a test case so that a subsequent LIST command will send the
<data> section of that test case back.
It allows LIST tests to be made more similar to how all other tests
work.
Test 100 was updated to provide its own directory listing.
Steve Holme [Sat, 4 Jan 2014 18:10:18 +0000 (18:10 +0000)]
examples: Standardised username and password settings for all email examples
Replaced the use of CURLOPT_USERPWD for the preferred CURLOPT_USERNAME
and CURLOPT_PASSWORD options and used the same username and password for
all email examples which is the same as that used in the test suite.
Steve Holme [Sat, 4 Jan 2014 17:41:10 +0000 (17:41 +0000)]
Updated copyright year for recent changes
Marc Hoersken [Sat, 4 Jan 2014 16:49:54 +0000 (17:49 +0100)]
secureserver.pl: support for stunnel-path with nun-alphanum chars
This is desired to support stunnel installations on Windows.
Marc Hoersken [Sat, 4 Jan 2014 15:34:58 +0000 (16:34 +0100)]
conncache.c: fix possible dereference of null pointer
Marc Hoersken [Sat, 4 Jan 2014 13:33:27 +0000 (14:33 +0100)]
docs: primarily refer to schannel as WinSSL
Steve Holme [Fri, 3 Jan 2014 22:57:10 +0000 (22:57 +0000)]
examples: Added IMAP COPY example
Steve Holme [Fri, 3 Jan 2014 22:42:26 +0000 (22:42 +0000)]
examples: Added IMAP DELETE example
Steve Holme [Fri, 3 Jan 2014 22:27:46 +0000 (22:27 +0000)]
examples: Added IMAP CREATE example
Daniel Stenberg [Fri, 3 Jan 2014 23:27:01 +0000 (00:27 +0100)]
FTP parselist: fix "total" parser
A regression introduced in
7f3b87d8782eae1 (present in the 7.21.4 release)
broke the total parser. Now skip the whitespace and the digits.
Reported-by: Justin Maggard
Bug: http://curl.haxx.se/mail/lib-2014-01/0019.html
Daniel Stenberg [Fri, 3 Jan 2014 20:01:55 +0000 (21:01 +0100)]
test1513: fix spelling
Marc Hoersken [Fri, 3 Jan 2014 15:55:49 +0000 (16:55 +0100)]
Makefile.vc6: follow up fix for
11e8066 and
92b9ae5
Daniel Stenberg [Fri, 3 Jan 2014 11:25:09 +0000 (12:25 +0100)]
test1513: added - verify early progress callback return fail
Verify the change brought in commit
8e11731653061. It makes sure that
returning a failure from the progress callback even very early results
in the correct return code.
Daniel Stenberg [Thu, 2 Jan 2014 22:24:26 +0000 (23:24 +0100)]
progresscallback: make CURLE_ABORTED_BY_CALLBACK get returned better
When the progress callback returned 1 at a very early state, the code
would not make CURLE_ABORTED_BY_CALLBACK get returned but the process
would still be interrupted. In the HTTP case, this would then cause a
CURLE_GOT_NOTHING to erroneously get returned instead.
Reported-by: Petr Novak
Bug: http://curl.haxx.se/bug/view.cgi?id=1318
Marc Hoersken [Fri, 3 Jan 2014 11:30:23 +0000 (12:30 +0100)]
unittests: do not include curl_memory.h
memdebug.h already contains all required definitions and including
curl_memory.h causes errors like the following:
tests/unit/unit1394.c:119: undefined reference to `Curl_cfree'
tests/unit/unit1394.c:120: undefined reference to `Curl_cfree'
Daniel Stenberg [Fri, 3 Jan 2014 11:02:56 +0000 (12:02 +0100)]
pipeline: remove print_pipeline()
This is a debug function only and serves no purpose in production code,
it only slows things down. I left the code #ifdef'ed for possible future
pipeline debugging.
Also, this was a global function without proper namespace usage.
Reported-by: He Qin
Bug: http://curl.haxx.se/bug/view.cgi?id=1320
Daniel Stenberg [Fri, 3 Jan 2014 10:52:49 +0000 (11:52 +0100)]
openssl: allow explicit sslv2 selection
If OpenSSL is built to support SSLv2 this brings back the ability to
explicitly select that as a protocol level.
Reported-by: Steve Holme
Bug: http://curl.haxx.se/mail/lib-2014-01/0013.html
Steve Holme [Thu, 2 Jan 2014 23:44:59 +0000 (23:44 +0000)]
Bumped copyright year to 2014
Steve Holme [Thu, 2 Jan 2014 23:35:29 +0000 (23:35 +0000)]
Updated copyright year for recent changes
Marc Hoersken [Thu, 2 Jan 2014 23:32:05 +0000 (00:32 +0100)]
vtls/nssg.h: fixed include references to moved file
Christian Weisgerber [Thu, 2 Jan 2014 23:01:36 +0000 (00:01 +0100)]
curl_easy_setopt.3: fix formatting mistakes
This fixes two markup typos I noticed in curl_easy_setopt.3. (The use
of bold vs. italics seems a bit inconsistent in that page, but it should
at least be valid man syntax.)
Barry Abrahamson [Wed, 1 Jan 2014 22:50:45 +0000 (23:50 +0100)]
OpenSSL: Fix forcing SSLv3 connections
Some feedback provided by byte_bucket on IRC pointed out that commit
db11750cfa5b1 wasn’t really correct because it allows for “upgrading” to a
newer protocol when it should be only allowing for SSLv3.
This change fixes that.
When SSLv3 connection is forced, don't allow SSL negotiations for newer
versions. Feedback provided by byte_bucket in #curl. This behavior is
also consistent with the other force flags like --tlsv1.1 which doesn't
allow for TLSv1.2 negotiation, etc
Feedback-by: byte_bucket
Bug: http://curl.haxx.se/bug/view.cgi?id=1319
Guenter Knauf [Thu, 2 Jan 2014 21:15:23 +0000 (22:15 +0100)]
Trial to fix the nmake Makefile for vtls files.
Steve Holme [Thu, 2 Jan 2014 20:19:19 +0000 (20:19 +0000)]
examples: Added IMAP SEARCH example
Steve Holme [Thu, 2 Jan 2014 19:49:49 +0000 (19:49 +0000)]
examples: Added IMAP EXAMINE mailbox folder example
Guenter Knauf [Thu, 2 Jan 2014 19:40:33 +0000 (20:40 +0100)]
Fix NetWare build for vtls files.
Daniel Stenberg [Wed, 1 Jan 2014 21:35:59 +0000 (22:35 +0100)]
CMakeLists.txt: add standard curl source code header
Daniel Stenberg [Wed, 1 Jan 2014 21:32:55 +0000 (22:32 +0100)]
CMakeLists.txt: add warning about the cmake build's state
Steve Holme [Wed, 1 Jan 2014 20:42:03 +0000 (20:42 +0000)]
examples: Updated SMTP multi example to be more realistic
Updated the contents of the email and payload callback as per the IMAP
and other SMTP examples.
Barry Abrahamson [Wed, 1 Jan 2014 04:28:35 +0000 (05:28 +0100)]
OpenSSL: Fix forcing SSLv3 connections
Since
ad34a2d5c87c7f4b14e8dded3 (present in 7.34.0 release) forcing
SSLv3 will always return the error "curl: (35) Unsupported SSL protocol
version" Can be replicated with `curl -I -3 https://www.google.com/`.
This fix simply allows for v3 to be forced.
Steve Holme [Wed, 1 Jan 2014 19:31:22 +0000 (19:31 +0000)]
examples: Corrected unescaped backslash in imap-store.c
Steve Holme [Wed, 1 Jan 2014 18:31:42 +0000 (18:31 +0000)]
examples: Update SMTP TLS example mail content to be RFC-2821 compliant
...and made some minor coding style changes to better match the curl
coding standards as well as the other email related examples.
Steve Holme [Wed, 1 Jan 2014 18:00:18 +0000 (18:00 +0000)]
examples: Added IMAP APPEND example
Steve Holme [Wed, 1 Jan 2014 17:15:03 +0000 (17:15 +0000)]
examples: Added IMAP STORE example
Steve Holme [Tue, 31 Dec 2013 16:40:00 +0000 (16:40 +0000)]
RELEASE-NOTES: Synced with
7de2e032584d44
Steve Holme [Tue, 31 Dec 2013 16:22:28 +0000 (16:22 +0000)]
examples: Added IMAP LIST mailbox example
Steve Holme [Tue, 31 Dec 2013 16:00:16 +0000 (16:00 +0000)]
examples: Updated IMAP fetch example for libcurl 7.30.0
Steve Holme [Tue, 31 Dec 2013 15:45:15 +0000 (15:45 +0000)]
examples: Rename before adding additional email examples
Steve Holme [Tue, 31 Dec 2013 14:28:47 +0000 (14:28 +0000)]
examples: Added SMTP EXPN command example
Steve Holme [Tue, 31 Dec 2013 13:22:40 +0000 (13:22 +0000)]
examples: Added SMTP email verification example
Steve Holme [Tue, 31 Dec 2013 12:16:33 +0000 (12:16 +0000)]
imap: Fixed line length warning
Steve Holme [Tue, 31 Dec 2013 11:10:25 +0000 (11:10 +0000)]
mprintf: Replaced internal usage of FORMAT_OFF_T and FORMAT_OFF_TU
Following commit
0aafd77fa4c6f2, replaced the internal usage of
FORMAT_OFF_T and FORMAT_OFF_TU with the external versions that we
expect API programmers to use.
This negates the need for separate definitions which were subtly
different under different platforms/compilers.
Steve Holme [Tue, 31 Dec 2013 00:26:10 +0000 (00:26 +0000)]
examples: Updated copyright year for recent edits
Steve Holme [Tue, 31 Dec 2013 00:21:10 +0000 (00:21 +0000)]
examples: Corrected incorrect indentation in smtp-multi.c
Steve Holme [Tue, 31 Dec 2013 00:19:10 +0000 (00:19 +0000)]
examples: Updated SMTP examples to set CURLOPT_UPLOAD
Steve Holme [Sun, 29 Dec 2013 14:45:28 +0000 (14:45 +0000)]
mprintf: Added support for I, I32 and I64 size specifiers
Added support to the built-in printf() replacement functions, for these
non-ANSI extensions when compiling under Visual Studio, Borland, Watcom
and MinGW.
This fixes problems when generating libcurl source code that contains
curl_off_t variables.
Steve Holme [Sun, 29 Dec 2013 16:59:59 +0000 (16:59 +0000)]
curl_easy_setopt.3: Added SMTP information to CURLOPT_INFILESIZE_LARGE
Although added to CURLOPT_INFILESIZE in commit
ee3d3adc6fe155 it was
never added to CURLOPT_INFILESIZE_LARGE.
Steve Holme [Sat, 28 Dec 2013 20:22:22 +0000 (20:22 +0000)]
tests: Disabled NTLM tests when running with SSPI enabled
Steve Holme [Sat, 28 Dec 2013 19:44:07 +0000 (19:44 +0000)]
connect.c: Fixed compilation warning
warning: 'res' may be used uninitialized in this function
Steve Holme [Sat, 28 Dec 2013 16:32:48 +0000 (16:32 +0000)]
runtests.pl: Fixed slightly incorrect regex in commit
28dd47d4d41900
Björn Stenberg [Sat, 28 Dec 2013 12:42:57 +0000 (13:42 +0100)]
connect: Try all addresses in first connection attempt
Fixes a bug when all addresses in the first family fail immediately, due
to "Network unreachable" for example, curl would hang and never try the
next address family.
Iterate through all address families when to trying establish the first
connection attempt.
Bug: http://curl.haxx.se/bug/view.cgi?id=1315
Reported-by: Michal Górny and Anthony G. Basile
Steve Holme [Sat, 28 Dec 2013 11:31:43 +0000 (11:31 +0000)]
runtests.pl: Optimised feature present checking code
...to exclude not present features.
Steve Holme [Sat, 28 Dec 2013 11:11:18 +0000 (11:11 +0000)]
runtests.pl: Added the ability to run tests when a feature is not present
Steve Holme [Fri, 27 Dec 2013 20:12:20 +0000 (20:12 +0000)]
ftpserver.pl: Fixed compilation error
Unmatched right curly bracket at line 758, at end of line