Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
TLMSP curl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CYBER - Cyber Security
TS 103 523 MSP
TLMSP
TLMSP curl
Commits
ac9d9258
Commit
ac9d9258
authored
15 years ago
by
Yang Tse
Browse files
Options
Downloads
Patches
Plain Diff
Fix an issue, affecting FTP transfers, introduced with the transfer.c patch committed May 4.
Additionally some identation fixes.
parent
f32dc6b8
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CHANGES
+4
-0
4 additions, 0 deletions
CHANGES
lib/transfer.c
+57
-59
57 additions, 59 deletions
lib/transfer.c
with
61 additions
and
59 deletions
CHANGES
+
4
−
0
View file @
ac9d9258
...
...
@@ -6,6 +6,10 @@
Changelog
Yang Tse (7 May 2009)
- Fixed an issue affecting FTP transfers, introduced with the transfer.c
patch committed May 4.
Daniel Stenberg (7 May 2009)
- Man page *roff problems fixed thanks to input from Colin Watson. Problems
reported in the Debian package.
...
...
This diff is collapsed.
Click to expand it.
lib/transfer.c
+
57
−
59
View file @
ac9d9258
...
...
@@ -130,18 +130,18 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
struct
SessionHandle
*
data
=
conn
->
data
;
size_t
buffersize
=
(
size_t
)
bytes
;
int
nread
;
int
sending_http_headers
=
FALSE
;
bool
sending_http_headers
=
FALSE
;
if
(
data
->
req
.
upload_chunky
)
{
/* if chunked Transfer-Encoding */
buffersize
-=
(
8
+
2
+
2
);
/* 32bit hex + CRLF + CRLF */
data
->
req
.
upload_fromhere
+=
(
8
+
2
);
/* 32bit hex + CRLF */
}
if
((
data
->
state
.
proto
.
http
)
&&
(
data
->
state
.
proto
.
http
->
sending
==
HTTPSEND_REQUEST
))
{
/* We're sending the HTTP request headers, not the data.
Remember that so we don't re-translate them into garbage. */
sending_http_headers
=
TRUE
;
if
((
conn
->
protocol
&
PROT_HTTP
)
&&
(
data
->
state
.
proto
.
http
->
sending
==
HTTPSEND_REQUEST
))
{
/* We're sending the HTTP request headers, not the data.
Remember that so we don't re-translate them into garbage. */
sending_http_headers
=
TRUE
;
}
/* this function returns a size_t, so we typecast to int to prevent warnings
...
...
@@ -242,18 +242,16 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, int bytes, int *nreadp)
}
nread
+=
strlen
(
endofline_native
);
/* for the added end of line */
}
#ifdef CURL_DOES_CONVERSIONS
}
else
{
if
((
data
->
set
.
prefer_ascii
)
&&
(
!
sending_http_headers
))
{
CURLcode
res
;
res
=
Curl_convert_to_network
(
data
,
data
->
req
.
upload_fromhere
,
nread
);
/* Curl_convert_to_network calls failf if unsuccessful */
if
(
res
!=
CURLE_OK
)
{
return
(
res
);
}
}
#endif
/* CURL_DOES_CONVERSIONS */
else
if
((
data
->
set
.
prefer_ascii
)
&&
(
!
sending_http_headers
))
{
CURLcode
res
;
res
=
Curl_convert_to_network
(
data
,
data
->
req
.
upload_fromhere
,
nread
);
/* Curl_convert_to_network calls failf if unsuccessful */
if
(
res
!=
CURLE_OK
)
return
(
res
);
}
#endif
/* CURL_DOES_CONVERSIONS */
*
nreadp
=
nread
;
...
...
@@ -1460,7 +1458,7 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
ssize_t
bytes_written
;
CURLcode
result
;
ssize_t
nread
;
/* number of bytes read */
int
sending_http_headers
=
FALSE
;
bool
sending_http_headers
=
FALSE
;
if
((
k
->
bytecount
==
0
)
&&
(
k
->
writebytecount
==
0
))
Curl_pgrsTime
(
data
,
TIMER_STARTTRANSFER
);
...
...
@@ -1496,15 +1494,15 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
break
;
}
if
(
data
->
state
.
proto
.
http
)
{
if
(
data
->
state
.
proto
.
http
->
sending
==
HTTPSEND_REQUEST
)
{
if
(
conn
->
protocol
&
PROT_HTTP
)
{
if
(
data
->
state
.
proto
.
http
->
sending
==
HTTPSEND_REQUEST
)
/* We're sending the HTTP request headers, not the data.
Remember that so we don't change the line endings. */
sending_http_headers
=
TRUE
;
}
else
{
sending_http_headers
=
TRUE
;
else
sending_http_headers
=
FALSE
;
}
}
result
=
Curl_fillreadbuffer
(
conn
,
BUFSIZE
,
&
fillcount
);
if
(
result
)
return
result
;
...
...
@@ -1534,50 +1532,50 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
data
->
req
.
upload_present
=
nread
;
/* convert LF to CRLF if so asked */
if
((
!
sending_http_headers
)
&&
#ifdef CURL_DO_LINEEND_CONV
/* always convert if we're FTPing in ASCII mode */
if
(
((
data
->
set
.
crlf
)
||
(
data
->
set
.
prefer_ascii
))
/* always convert if we're FTPing in ASCII mode */
((
data
->
set
.
crlf
)
||
(
data
->
set
.
prefer_ascii
))
)
{
#else
if
((
data
->
set
.
crlf
)
#endif
/* CURL_DO_LINEEND_CONV */
&&
(
!
sending_http_headers
))
{
if
(
data
->
state
.
scratch
==
NULL
)
data
->
state
.
scratch
=
malloc
(
2
*
BUFSIZE
);
if
(
data
->
state
.
scratch
==
NULL
)
{
failf
(
data
,
"Failed to alloc scratch buffer!"
);
return
CURLE_OUT_OF_MEMORY
;
}
/*
* ASCII/EBCDIC Note: This is presumably a text (not binary)
* transfer so the data should already be in ASCII.
* That means the hex values for ASCII CR (0x0d) & LF (0x0a)
* must be used instead of the escape sequences \r & \n.
*/
for
(
i
=
0
,
si
=
0
;
i
<
nread
;
i
++
,
si
++
)
{
if
(
data
->
req
.
upload_fromhere
[
i
]
==
0x0a
)
{
data
->
state
.
scratch
[
si
++
]
=
0x0d
;
data
->
state
.
scratch
[
si
]
=
0x0a
;
if
(
!
data
->
set
.
crlf
)
{
/* we're here only because FTP is in ASCII mode...
bump infilesize for the LF we just added */
data
->
set
.
infilesize
++
;
}
(
data
->
set
.
crlf
))
{
#endif
if
(
data
->
state
.
scratch
==
NULL
)
data
->
state
.
scratch
=
malloc
(
2
*
BUFSIZE
);
if
(
data
->
state
.
scratch
==
NULL
)
{
failf
(
data
,
"Failed to alloc scratch buffer!"
);
return
CURLE_OUT_OF_MEMORY
;
}
/*
* ASCII/EBCDIC Note: This is presumably a text (not binary)
* transfer so the data should already be in ASCII.
* That means the hex values for ASCII CR (0x0d) & LF (0x0a)
* must be used instead of the escape sequences \r & \n.
*/
for
(
i
=
0
,
si
=
0
;
i
<
nread
;
i
++
,
si
++
)
{
if
(
data
->
req
.
upload_fromhere
[
i
]
==
0x0a
)
{
data
->
state
.
scratch
[
si
++
]
=
0x0d
;
data
->
state
.
scratch
[
si
]
=
0x0a
;
if
(
!
data
->
set
.
crlf
)
{
/* we're here only because FTP is in ASCII mode...
bump infilesize for the LF we just added */
data
->
set
.
infilesize
++
;
}
else
data
->
state
.
scratch
[
si
]
=
data
->
req
.
upload_fromhere
[
i
];
}
if
(
si
!=
nread
)
{
/* only perform the special operation if we really did replace
anything */
nread
=
si
;
else
data
->
state
.
scratch
[
si
]
=
data
->
req
.
upload_fromhere
[
i
];
}
if
(
si
!=
nread
)
{
/* only perform the special operation if we really did replace
anything */
nread
=
si
;
/* upload from the new (replaced) buffer instead */
data
->
req
.
upload_fromhere
=
data
->
state
.
scratch
;
/* upload from the new (replaced) buffer instead */
data
->
req
.
upload_fromhere
=
data
->
state
.
scratch
;
/* set the new amount too */
data
->
req
.
upload_present
=
nread
;
}
/* set the new amount too */
data
->
req
.
upload_present
=
nread
;
}
}
}
/* if 0 == data->req.upload_present */
else
{
/* We have a partial buffer left from a previous "round". Use
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment