Browse Source

Cleanup/remove included inet functions)

nfactor-troky
Kano 13 years ago
parent
commit
152708fee7
  1. 35
      api-example.c
  2. 19
      api.c

35
api-example.c

@ -40,8 +40,6 @@ @@ -40,8 +40,6 @@
#ifdef WIN32
#include <winsock2.h>
#include "inet_ntop.h"
#include "inet_pton.h"
#define SOCKETTYPE SOCKET
#define SOCKETFAIL(a) ((a) == SOCKET_ERROR)
@ -138,6 +136,8 @@ @@ -138,6 +136,8 @@
#endif
#endif
#define RECVSIZE 65500
static const char SEPARATOR = '|';
static const char COMMA = ',';
static const char EQ = '=';
@ -187,12 +187,12 @@ void display(char *buf) @@ -187,12 +187,12 @@ void display(char *buf)
int callapi(char *command, char *host, short int port)
{
char buf[BUFSIZ];
char buf[RECVSIZE+1];
struct hostent *ip;
struct sockaddr_in serv;
SOCKETTYPE sock;
int ret = 0;
int n;
int n, p;
SOCKETINIT;
@ -220,8 +220,23 @@ int callapi(char *command, char *host, short int port) @@ -220,8 +220,23 @@ int callapi(char *command, char *host, short int port)
ret = 1;
}
else {
n = recv(sock, buf, BUFSIZ, 0);
buf[n] = '\0';
p = 0;
buf[0] = '\0';
while (p < RECVSIZE) {
n = recv(sock, &buf[p], RECVSIZE - p , 0);
if (SOCKETFAIL(n)) {
printf("Recv failed: %s\n", SOCKERRMSG);
ret = 1;
break;
}
if (n == 0)
break;
p += n;
buf[p] = '\0';
}
printf("Reply was '%s'\n", buf);
@ -256,6 +271,14 @@ int main(int argc, char *argv[]) @@ -256,6 +271,14 @@ int main(int argc, char *argv[])
short int port = 4028;
char *ptr;
if (argc > 1)
if (strcmp(argv[1], "-?") == 0
|| strcmp(argv[1], "-h") == 0
|| strcmp(argv[1], "--help") == 0) {
fprintf(stderr, "usAge: %s [command [ip/host [port]]]\n", argv[0]);
return 1;
}
if (argc > 1) {
ptr = trim(argv[1]);
if (strlen(ptr) > 0)

19
api.c

@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
#define SOCKETTYPE int
#define SOCKETFAIL(a) ((a) < 0)
#define INVSOCK -1
#define INVINETADDR -1
#define CLOSESOCKET close
#define SOCKERRMSG strerror(errno)
@ -37,12 +38,11 @@ @@ -37,12 +38,11 @@
#ifdef WIN32
#include <winsock2.h>
#include "inet_ntop.h"
#include "inet_pton.h"
#define SOCKETTYPE SOCKET
#define SOCKETFAIL(a) ((a) == SOCKET_ERROR)
#define INVSOCK INVALID_SOCKET
#define INVINETADDR INADDR_NONE
#define CLOSESOCKET closesocket
static char WSAbuf[1024];
@ -706,7 +706,7 @@ void api(void) @@ -706,7 +706,7 @@ void api(void)
const char *localaddr = "127.0.0.1";
SOCKETTYPE c;
int n, bound;
char connectaddr[32];
char *connectaddr;
char *binderror;
time_t bindstart;
short int port = opt_api_port;
@ -718,14 +718,14 @@ void api(void) @@ -718,14 +718,14 @@ void api(void)
bool did;
int i;
/* This should be done first to ensure curl has already called WSAStartup() in windows */
sleep(opt_log_interval);
if (!opt_api_listen) {
applog(LOG_WARNING, "API not running%s", UNAVAILABLE);
return;
}
/* This should be done first to ensure curl has already called WSAStartup() in windows */
sleep(opt_log_interval);
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVSOCK) {
applog(LOG_ERR, "API1 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
@ -737,7 +737,8 @@ void api(void) @@ -737,7 +737,8 @@ void api(void)
serv.sin_family = AF_INET;
if (!opt_api_network) {
if (inet_pton(AF_INET, localaddr, &(serv.sin_addr)) == 0) {
serv.sin_addr.s_addr = inet_addr(localaddr);
if (serv.sin_addr.s_addr == INVINETADDR) {
applog(LOG_ERR, "API2 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
return;
}
@ -791,12 +792,12 @@ void api(void) @@ -791,12 +792,12 @@ void api(void)
if (opt_api_network)
addrok = true;
else {
inet_ntop(AF_INET, &(cli.sin_addr), &(connectaddr[0]), sizeof(connectaddr)-1);
connectaddr = inet_ntoa(cli.sin_addr);
addrok = (strcmp(connectaddr, localaddr) == 0);
}
if (opt_debug) {
inet_ntop(AF_INET, &(cli.sin_addr), &(connectaddr[0]), sizeof(connectaddr)-1);
connectaddr = inet_ntoa(cli.sin_addr);
applog(LOG_DEBUG, "DBG: connection from %s - %s", connectaddr, addrok ? "Accepted" : "Ignored");
}

Loading…
Cancel
Save