mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
API make the main socket non-static
This commit is contained in:
parent
b45a07032a
commit
1eca0476f1
32
api.c
32
api.c
@ -125,7 +125,6 @@ char *WSAErrorMsg(void) {
|
|||||||
return &(WSAbuf[0]);
|
return &(WSAbuf[0]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
static SOCKETTYPE sock = INVSOCK;
|
|
||||||
|
|
||||||
static const char *UNAVAILABLE = " - API will not be available";
|
static const char *UNAVAILABLE = " - API will not be available";
|
||||||
static const char *INVAPIGROUPS = "Invalid --api-groups parameter";
|
static const char *INVAPIGROUPS = "Invalid --api-groups parameter";
|
||||||
@ -3649,12 +3648,14 @@ static void tidyup(__maybe_unused void *arg)
|
|||||||
{
|
{
|
||||||
mutex_lock(&quit_restart_lock);
|
mutex_lock(&quit_restart_lock);
|
||||||
|
|
||||||
|
SOCKETTYPE *apisock = (SOCKETTYPE *)arg;
|
||||||
|
|
||||||
bye = true;
|
bye = true;
|
||||||
|
|
||||||
if (sock != INVSOCK) {
|
if (*apisock != INVSOCK) {
|
||||||
shutdown(sock, SHUT_RDWR);
|
shutdown(*apisock, SHUT_RDWR);
|
||||||
CLOSESOCKET(sock);
|
CLOSESOCKET(*apisock);
|
||||||
sock = INVSOCK;
|
*apisock = INVSOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ipaccess != NULL) {
|
if (ipaccess != NULL) {
|
||||||
@ -3971,6 +3972,11 @@ void api(int api_thr_id)
|
|||||||
bool did;
|
bool did;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
SOCKETTYPE *apisock;
|
||||||
|
|
||||||
|
apisock = malloc(sizeof(*apisock));
|
||||||
|
*apisock = INVSOCK;
|
||||||
|
|
||||||
if (!opt_api_listen) {
|
if (!opt_api_listen) {
|
||||||
applog(LOG_DEBUG, "API not running%s", UNAVAILABLE);
|
applog(LOG_DEBUG, "API not running%s", UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
@ -3980,7 +3986,7 @@ void api(int api_thr_id)
|
|||||||
|
|
||||||
mutex_init(&quit_restart_lock);
|
mutex_init(&quit_restart_lock);
|
||||||
|
|
||||||
pthread_cleanup_push(tidyup, NULL);
|
pthread_cleanup_push(tidyup, (void *)apisock);
|
||||||
my_thr_id = api_thr_id;
|
my_thr_id = api_thr_id;
|
||||||
|
|
||||||
setup_groups();
|
setup_groups();
|
||||||
@ -3998,8 +4004,8 @@ void api(int api_thr_id)
|
|||||||
* to ensure curl has already called WSAStartup() in windows */
|
* to ensure curl has already called WSAStartup() in windows */
|
||||||
nmsleep(opt_log_interval*1000);
|
nmsleep(opt_log_interval*1000);
|
||||||
|
|
||||||
sock = socket(AF_INET, SOCK_STREAM, 0);
|
*apisock = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if (sock == INVSOCK) {
|
if (*apisock == INVSOCK) {
|
||||||
applog(LOG_ERR, "API1 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
applog(LOG_ERR, "API1 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4024,7 +4030,7 @@ void api(int api_thr_id)
|
|||||||
// another program has it open - which is what we want
|
// another program has it open - which is what we want
|
||||||
int optval = 1;
|
int optval = 1;
|
||||||
// If it doesn't work, we don't really care - just show a debug message
|
// If it doesn't work, we don't really care - just show a debug message
|
||||||
if (SOCKETFAIL(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *)(&optval), sizeof(optval))))
|
if (SOCKETFAIL(setsockopt(*apisock, SOL_SOCKET, SO_REUSEADDR, (void *)(&optval), sizeof(optval))))
|
||||||
applog(LOG_DEBUG, "API setsockopt SO_REUSEADDR failed (ignored): %s", SOCKERRMSG);
|
applog(LOG_DEBUG, "API setsockopt SO_REUSEADDR failed (ignored): %s", SOCKERRMSG);
|
||||||
#else
|
#else
|
||||||
// On windows a 2nd program can bind to a port>1024 already in use unless
|
// On windows a 2nd program can bind to a port>1024 already in use unless
|
||||||
@ -4036,7 +4042,7 @@ void api(int api_thr_id)
|
|||||||
bound = 0;
|
bound = 0;
|
||||||
bindstart = time(NULL);
|
bindstart = time(NULL);
|
||||||
while (bound == 0) {
|
while (bound == 0) {
|
||||||
if (SOCKETFAIL(bind(sock, (struct sockaddr *)(&serv), sizeof(serv)))) {
|
if (SOCKETFAIL(bind(*apisock, (struct sockaddr *)(&serv), sizeof(serv)))) {
|
||||||
binderror = SOCKERRMSG;
|
binderror = SOCKERRMSG;
|
||||||
if ((time(NULL) - bindstart) > 61)
|
if ((time(NULL) - bindstart) > 61)
|
||||||
break;
|
break;
|
||||||
@ -4053,9 +4059,9 @@ void api(int api_thr_id)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SOCKETFAIL(listen(sock, QUEUE))) {
|
if (SOCKETFAIL(listen(*apisock, QUEUE))) {
|
||||||
applog(LOG_ERR, "API3 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
applog(LOG_ERR, "API3 initialisation failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
||||||
CLOSESOCKET(sock);
|
CLOSESOCKET(*apisock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4070,7 +4076,7 @@ void api(int api_thr_id)
|
|||||||
|
|
||||||
while (!bye) {
|
while (!bye) {
|
||||||
clisiz = sizeof(cli);
|
clisiz = sizeof(cli);
|
||||||
if (SOCKETFAIL(c = accept(sock, (struct sockaddr *)(&cli), &clisiz))) {
|
if (SOCKETFAIL(c = accept(*apisock, (struct sockaddr *)(&cli), &clisiz))) {
|
||||||
applog(LOG_ERR, "API failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
applog(LOG_ERR, "API failed (%s)%s", SOCKERRMSG, UNAVAILABLE);
|
||||||
goto die;
|
goto die;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user