mirror of
https://github.com/curl/curl.git
synced 2026-08-25 06:23:30 +03:00
hostname and large file support added
This commit is contained in:
parent
31b8eea041
commit
1b1f143cd6
9 changed files with 123 additions and 14 deletions
|
|
@ -69,7 +69,7 @@
|
|||
#include "urldata.h"
|
||||
#include "sendf.h"
|
||||
|
||||
#ifndef HAVE_INET_NTOA_R_DECL
|
||||
#if defined(HAVE_INET_NTOA_R) && !defined(HAVE_INET_NTOA_R_DECL)
|
||||
#include "inet_ntoa_r.h"
|
||||
#endif
|
||||
|
||||
|
|
|
|||
22
lib/http.c
22
lib/http.c
|
|
@ -38,12 +38,6 @@
|
|||
* ------------------------------------------------------------
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef NEED_REENTRANT
|
||||
#define _REENTRANT /* Necessary to use in Solaris, since the silly guys at Sun
|
||||
made the localtime_r() prototype dependent on it (or
|
||||
_POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS). */
|
||||
#endif
|
||||
|
||||
/* -- WIN32 approved -- */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
|
@ -57,6 +51,12 @@
|
|||
|
||||
#include "setup.h"
|
||||
|
||||
#ifdef NEED_REENTRANT
|
||||
#define _REENTRANT /* Necessary to use in Solaris, since the silly guys at Sun
|
||||
made the localtime_r() prototype dependent on it (or
|
||||
_POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS). */
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
|
||||
#include <winsock.h>
|
||||
#include <time.h>
|
||||
|
|
@ -378,7 +378,7 @@ CURLcode http(struct connectdata *conn)
|
|||
#ifdef HAVE_LOCALTIME_R
|
||||
/* thread-safe version */
|
||||
struct tm keeptime;
|
||||
thistime = localtime_r(&data->timevalue, &keeptime);
|
||||
thistime = (struct tm *)localtime_r(&data->timevalue, &keeptime);
|
||||
#else
|
||||
thistime = localtime(&data->timevalue);
|
||||
#endif
|
||||
|
|
@ -492,13 +492,19 @@ CURLcode http(struct connectdata *conn)
|
|||
actually set your own */
|
||||
sendf(data->firstsocket, data,
|
||||
"Content-Length: %d\r\n",
|
||||
strlen(data->postfields));
|
||||
(data->postfieldsize?data->postfieldsize:
|
||||
strlen(data->postfields)) );
|
||||
|
||||
if(!checkheaders(data, "Content-Type:"))
|
||||
sendf(data->firstsocket, data,
|
||||
"Content-Type: application/x-www-form-urlencoded\r\n");
|
||||
|
||||
/* and here comes the actual data */
|
||||
if(data->postfieldsize) {
|
||||
ssend(data->firstsocket, data, "\r\n", 2);
|
||||
ssend(data->firstsocket, data, data->postfields, data->postfieldsize);
|
||||
ssend(data->firstsocket, data, "\r\n", 2);
|
||||
}
|
||||
sendf(data->firstsocket, data,
|
||||
"\r\n"
|
||||
"%s\r\n",
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
#include <sys/sockio.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_INET_NTOA_R_DECL
|
||||
#if defined(HAVE_INET_NTOA_R) && !defined(HAVE_INET_NTOA_R_DECL)
|
||||
#include "inet_ntoa_r.h"
|
||||
#endif
|
||||
|
||||
|
|
|
|||
20
lib/sendf.c
20
lib/sendf.c
|
|
@ -84,7 +84,6 @@ void failf(struct UrlData *data, char *fmt, ...)
|
|||
}
|
||||
|
||||
/* sendf() sends the formated data to the server */
|
||||
|
||||
int sendf(int fd, struct UrlData *data, char *fmt, ...)
|
||||
{
|
||||
size_t bytes_written;
|
||||
|
|
@ -110,6 +109,25 @@ int sendf(int fd, struct UrlData *data, char *fmt, ...)
|
|||
return(bytes_written);
|
||||
}
|
||||
|
||||
/* ssend() sends plain (binary) data to the server */
|
||||
size_t ssend(int fd, struct UrlData *data, void *mem, size_t len)
|
||||
{
|
||||
size_t bytes_written;
|
||||
|
||||
if(data->bits.verbose)
|
||||
fprintf(data->err, "> [binary output]\n");
|
||||
#ifndef USE_SSLEAY
|
||||
bytes_written = swrite(fd, mem, len);
|
||||
#else
|
||||
if (data->use_ssl) {
|
||||
bytes_written = SSL_write(data->ssl, mem, len);
|
||||
} else {
|
||||
bytes_written = swrite(fd, mem, len);
|
||||
}
|
||||
#endif /* USE_SSLEAY */
|
||||
return bytes_written;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@
|
|||
* ------------------------------------------------------------
|
||||
****************************************************************************/
|
||||
|
||||
int sendf(int fd, struct UrlData *, char *fmt, ...);
|
||||
size_t sendf(int fd, struct UrlData *, char *fmt, ...);
|
||||
size_t ssend(int fd, struct UrlData *, void *fmt, size_t len);
|
||||
void infof(struct UrlData *, char *fmt, ...);
|
||||
void failf(struct UrlData *, char *fmt, ...);
|
||||
|
||||
|
|
|
|||
|
|
@ -421,6 +421,9 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
|
|||
case CURLOPT_POSTFIELDS:
|
||||
data->postfields = va_arg(param, char *);
|
||||
break;
|
||||
case CURLOPT_POSTFIELDSIZE:
|
||||
data->postfieldsize = va_arg(param, long);
|
||||
break;
|
||||
case CURLOPT_REFERER:
|
||||
data->referer = va_arg(param, char *);
|
||||
data->bits.http_set_referer = (data->referer && *data->referer)?1:0;
|
||||
|
|
|
|||
|
|
@ -345,6 +345,9 @@ struct UrlData {
|
|||
char *range; /* range, if used. See README for detailed specification on
|
||||
this syntax. */
|
||||
char *postfields; /* if POST, set the fields' values here */
|
||||
long postfieldsize; /* if POST, this might have a size to use instead of
|
||||
strlen(), and then the data *may* be binary (contain
|
||||
zero bytes) */
|
||||
|
||||
bool free_referer; /* set TRUE if 'referer' points to a string we
|
||||
allocated */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue