mirror of
https://github.com/moparisthebest/curl
synced 2024-11-16 14:35:03 -05:00
Use platform's native types for recv() and send() arguments.
This commit is contained in:
parent
10489879f7
commit
58176d1484
@ -332,7 +332,7 @@ CURLcode Curl_write(struct connectdata *conn,
|
|||||||
/* only TRUE if krb4 enabled */
|
/* only TRUE if krb4 enabled */
|
||||||
bytes_written = Curl_sec_write(conn, sockfd, mem, len);
|
bytes_written = Curl_sec_write(conn, sockfd, mem, len);
|
||||||
else
|
else
|
||||||
bytes_written = (ssize_t)swrite(sockfd, mem, len);
|
bytes_written = swrite(sockfd, mem, len);
|
||||||
|
|
||||||
if(-1 == bytes_written) {
|
if(-1 == bytes_written) {
|
||||||
int err = Curl_sockerrno();
|
int err = Curl_sockerrno();
|
||||||
|
71
lib/setup.h
71
lib/setup.h
@ -214,6 +214,65 @@ typedef unsigned char bool;
|
|||||||
#define struct_stat struct stat
|
#define struct_stat struct stat
|
||||||
#endif /* Win32 with large file support */
|
#endif /* Win32 with large file support */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The definitions for the return type and arguments types
|
||||||
|
* of functions recv() and send() belong and come from the
|
||||||
|
* configuration file. Do not define them in any other place.
|
||||||
|
*
|
||||||
|
* HAVE_RECV is defined if you have a function named recv()
|
||||||
|
* which is used to read incoming data from sockets. If your
|
||||||
|
* function has another name then don't define HAVE_RECV.
|
||||||
|
*
|
||||||
|
* If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2,
|
||||||
|
* RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also
|
||||||
|
* be defined.
|
||||||
|
*
|
||||||
|
* HAVE_SEND is defined if you have a function named send()
|
||||||
|
* which is used to write outgoing data on a connected socket.
|
||||||
|
* If yours has another name then don't define HAVE_SEND.
|
||||||
|
*
|
||||||
|
* If HAVE_SEND is defined then SEND_TYPE_ARG1, SEND_QUAL_ARG2,
|
||||||
|
* SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and
|
||||||
|
* SEND_TYPE_RETV must also be defined.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_RECV
|
||||||
|
#if !defined(RECV_TYPE_ARG1) || \
|
||||||
|
!defined(RECV_TYPE_ARG2) || \
|
||||||
|
!defined(RECV_TYPE_ARG3) || \
|
||||||
|
!defined(RECV_TYPE_ARG4) || \
|
||||||
|
!defined(RECV_TYPE_RETV)
|
||||||
|
/* */
|
||||||
|
Error: Missing definition of return and arguments types of recv().
|
||||||
|
/* */
|
||||||
|
#else
|
||||||
|
#define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)x, (RECV_TYPE_ARG2)y, (RECV_TYPE_ARG3)z, (RECV_TYPE_ARG4)SEND_4TH_ARG)
|
||||||
|
#endif
|
||||||
|
#else /* HAVE_RECV */
|
||||||
|
#ifdef DJGPP
|
||||||
|
#define sread(x,y,z) (ssize_t)read_s((int)x, (char *)y, (int)z)
|
||||||
|
#endif
|
||||||
|
#endif /* HAVE_RECV */
|
||||||
|
|
||||||
|
#ifdef HAVE_SEND
|
||||||
|
#if !defined(SEND_TYPE_ARG1) || \
|
||||||
|
!defined(SEND_QUAL_ARG2) || \
|
||||||
|
!defined(SEND_TYPE_ARG2) || \
|
||||||
|
!defined(SEND_TYPE_ARG3) || \
|
||||||
|
!defined(SEND_TYPE_ARG4) || \
|
||||||
|
!defined(SEND_TYPE_RETV)
|
||||||
|
/* */
|
||||||
|
Error: Missing definition of return and arguments types of send().
|
||||||
|
/* */
|
||||||
|
#else
|
||||||
|
#define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)x, (SEND_TYPE_ARG2)y, (SEND_TYPE_ARG3)z, (SEND_TYPE_ARG4)SEND_4TH_ARG)
|
||||||
|
#endif
|
||||||
|
#else /* HAVE_SEND */
|
||||||
|
#ifdef DJGPP
|
||||||
|
#define swrite(x,y,z) (ssize_t)write_s((int)x, (char *)y, (int)z)
|
||||||
|
#endif
|
||||||
|
#endif /* HAVE_SEND */
|
||||||
|
|
||||||
|
|
||||||
/* Below we define four functions. They should
|
/* Below we define four functions. They should
|
||||||
1. close a socket
|
1. close a socket
|
||||||
@ -229,16 +288,10 @@ typedef unsigned char bool;
|
|||||||
#if !defined(__GNUC__) || defined(__MINGW32__)
|
#if !defined(__GNUC__) || defined(__MINGW32__)
|
||||||
#define sclose(x) closesocket(x)
|
#define sclose(x) closesocket(x)
|
||||||
|
|
||||||
/* Since Windows doesn't have/use the POSIX prototype for send() and recv(),
|
|
||||||
we typecast the third argument in the macros to avoid compiler warnings. */
|
|
||||||
#define sread(x,y,z) recv(x,y,(int)(z), SEND_4TH_ARG)
|
|
||||||
#define swrite(x,y,z) (size_t)send(x,y, (int)(z), SEND_4TH_ARG)
|
|
||||||
#undef HAVE_ALARM
|
#undef HAVE_ALARM
|
||||||
#else
|
#else
|
||||||
/* gcc-for-win is still good :) */
|
/* gcc-for-win is still good :) */
|
||||||
#define sclose(x) close(x)
|
#define sclose(x) close(x)
|
||||||
#define sread(x,y,z) recv(x,y,z, SEND_4TH_ARG)
|
|
||||||
#define swrite(x,y,z) send(x,y,z, SEND_4TH_ARG)
|
|
||||||
#define HAVE_ALARM
|
#define HAVE_ALARM
|
||||||
#endif /* !GNU or mingw */
|
#endif /* !GNU or mingw */
|
||||||
|
|
||||||
@ -250,8 +303,6 @@ typedef unsigned char bool;
|
|||||||
#ifdef DJGPP
|
#ifdef DJGPP
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#define sclose(x) close_s(x)
|
#define sclose(x) close_s(x)
|
||||||
#define sread(x,y,z) read_s(x,y,z)
|
|
||||||
#define swrite(x,y,z) write_s(x,y,z)
|
|
||||||
#define select(n,r,w,x,t) select_s(n,r,w,x,t)
|
#define select(n,r,w,x,t) select_s(n,r,w,x,t)
|
||||||
#define ioctl(x,y,z) ioctlsocket(x,y,(char *)(z))
|
#define ioctl(x,y,z) ioctlsocket(x,y,(char *)(z))
|
||||||
#define IOCTL_3_ARGS
|
#define IOCTL_3_ARGS
|
||||||
@ -264,12 +315,8 @@ typedef unsigned char bool;
|
|||||||
|
|
||||||
#ifdef __BEOS__
|
#ifdef __BEOS__
|
||||||
#define sclose(x) closesocket(x)
|
#define sclose(x) closesocket(x)
|
||||||
#define sread(x,y,z) (ssize_t)recv(x,y,z, SEND_4TH_ARG)
|
|
||||||
#define swrite(x,y,z) (ssize_t)send(x,y,z, SEND_4TH_ARG)
|
|
||||||
#else /* __BEOS__ */
|
#else /* __BEOS__ */
|
||||||
#define sclose(x) close(x)
|
#define sclose(x) close(x)
|
||||||
#define sread(x,y,z) recv(x,y,z, SEND_4TH_ARG)
|
|
||||||
#define swrite(x,y,z) send(x,y,z, SEND_4TH_ARG)
|
|
||||||
#endif /* __BEOS__ */
|
#endif /* __BEOS__ */
|
||||||
|
|
||||||
#define HAVE_ALARM
|
#define HAVE_ALARM
|
||||||
|
10
lib/telnet.c
10
lib/telnet.c
@ -289,12 +289,13 @@ static void printoption(struct SessionHandle *data,
|
|||||||
static void send_negotiation(struct connectdata *conn, int cmd, int option)
|
static void send_negotiation(struct connectdata *conn, int cmd, int option)
|
||||||
{
|
{
|
||||||
unsigned char buf[3];
|
unsigned char buf[3];
|
||||||
|
ssize_t bytes_written;
|
||||||
|
|
||||||
buf[0] = CURL_IAC;
|
buf[0] = CURL_IAC;
|
||||||
buf[1] = cmd;
|
buf[1] = cmd;
|
||||||
buf[2] = option;
|
buf[2] = option;
|
||||||
|
|
||||||
(void)swrite(conn->sock[FIRSTSOCKET], (char *)buf, 3);
|
bytes_written = swrite(conn->sock[FIRSTSOCKET], buf, 3);
|
||||||
|
|
||||||
printoption(conn->data, "SENT", cmd, option);
|
printoption(conn->data, "SENT", cmd, option);
|
||||||
}
|
}
|
||||||
@ -843,6 +844,7 @@ static void suboption(struct connectdata *conn)
|
|||||||
{
|
{
|
||||||
struct curl_slist *v;
|
struct curl_slist *v;
|
||||||
unsigned char temp[2048];
|
unsigned char temp[2048];
|
||||||
|
ssize_t bytes_written;
|
||||||
size_t len;
|
size_t len;
|
||||||
size_t tmplen;
|
size_t tmplen;
|
||||||
char varname[128];
|
char varname[128];
|
||||||
@ -857,7 +859,7 @@ static void suboption(struct connectdata *conn)
|
|||||||
snprintf((char *)temp, sizeof(temp),
|
snprintf((char *)temp, sizeof(temp),
|
||||||
"%c%c%c%c%s%c%c", CURL_IAC, CURL_SB, CURL_TELOPT_TTYPE,
|
"%c%c%c%c%s%c%c", CURL_IAC, CURL_SB, CURL_TELOPT_TTYPE,
|
||||||
CURL_TELQUAL_IS, tn->subopt_ttype, CURL_IAC, CURL_SE);
|
CURL_TELQUAL_IS, tn->subopt_ttype, CURL_IAC, CURL_SE);
|
||||||
(void)swrite(conn->sock[FIRSTSOCKET], (char *)temp, len);
|
bytes_written = swrite(conn->sock[FIRSTSOCKET], temp, len);
|
||||||
printsub(data, '>', &temp[2], len-2);
|
printsub(data, '>', &temp[2], len-2);
|
||||||
break;
|
break;
|
||||||
case CURL_TELOPT_XDISPLOC:
|
case CURL_TELOPT_XDISPLOC:
|
||||||
@ -865,7 +867,7 @@ static void suboption(struct connectdata *conn)
|
|||||||
snprintf((char *)temp, sizeof(temp),
|
snprintf((char *)temp, sizeof(temp),
|
||||||
"%c%c%c%c%s%c%c", CURL_IAC, CURL_SB, CURL_TELOPT_XDISPLOC,
|
"%c%c%c%c%s%c%c", CURL_IAC, CURL_SB, CURL_TELOPT_XDISPLOC,
|
||||||
CURL_TELQUAL_IS, tn->subopt_xdisploc, CURL_IAC, CURL_SE);
|
CURL_TELQUAL_IS, tn->subopt_xdisploc, CURL_IAC, CURL_SE);
|
||||||
(void)swrite(conn->sock[FIRSTSOCKET], (char *)temp, len);
|
bytes_written = swrite(conn->sock[FIRSTSOCKET], temp, len);
|
||||||
printsub(data, '>', &temp[2], len-2);
|
printsub(data, '>', &temp[2], len-2);
|
||||||
break;
|
break;
|
||||||
case CURL_TELOPT_NEW_ENVIRON:
|
case CURL_TELOPT_NEW_ENVIRON:
|
||||||
@ -888,7 +890,7 @@ static void suboption(struct connectdata *conn)
|
|||||||
snprintf((char *)&temp[len], sizeof(temp) - len,
|
snprintf((char *)&temp[len], sizeof(temp) - len,
|
||||||
"%c%c", CURL_IAC, CURL_SE);
|
"%c%c", CURL_IAC, CURL_SE);
|
||||||
len += 2;
|
len += 2;
|
||||||
(void)swrite(conn->sock[FIRSTSOCKET], (char *)temp, len);
|
bytes_written = swrite(conn->sock[FIRSTSOCKET], temp, len);
|
||||||
printsub(data, '>', &temp[2], len-2);
|
printsub(data, '>', &temp[2], len-2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -173,6 +173,7 @@ static int juggle(curl_socket_t *sockfdp,
|
|||||||
unsigned char buffer[256]; /* FIX: bigger buffer */
|
unsigned char buffer[256]; /* FIX: bigger buffer */
|
||||||
char data[256];
|
char data[256];
|
||||||
curl_socket_t sockfd;
|
curl_socket_t sockfd;
|
||||||
|
ssize_t bytes_written;
|
||||||
|
|
||||||
timeout.tv_sec = 120;
|
timeout.tv_sec = 120;
|
||||||
timeout.tv_usec = 0;
|
timeout.tv_usec = 0;
|
||||||
@ -301,7 +302,7 @@ static int juggle(curl_socket_t *sockfdp,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* send away on the socket */
|
/* send away on the socket */
|
||||||
swrite(sockfd, buffer, len);
|
bytes_written = swrite(sockfd, buffer, len);
|
||||||
}
|
}
|
||||||
else if(!memcmp("DISC", buffer, 4)) {
|
else if(!memcmp("DISC", buffer, 4)) {
|
||||||
/* disconnect! */
|
/* disconnect! */
|
||||||
|
@ -493,7 +493,7 @@ static int get_request(int sock, struct httprequest *req)
|
|||||||
/* returns -1 on failure */
|
/* returns -1 on failure */
|
||||||
static int send_doc(int sock, struct httprequest *req)
|
static int send_doc(int sock, struct httprequest *req)
|
||||||
{
|
{
|
||||||
int written;
|
ssize_t written;
|
||||||
size_t count;
|
size_t count;
|
||||||
const char *buffer;
|
const char *buffer;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
@ -519,7 +519,7 @@ static int send_doc(int sock, struct httprequest *req)
|
|||||||
count = strlen(STREAMTHIS);
|
count = strlen(STREAMTHIS);
|
||||||
while(1) {
|
while(1) {
|
||||||
written = swrite(sock, STREAMTHIS, count);
|
written = swrite(sock, STREAMTHIS, count);
|
||||||
if(written != (int)count) {
|
if(written != count) {
|
||||||
logmsg("Stopped streaming");
|
logmsg("Stopped streaming");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user