Compare commits
11 Commits
fix/xmpp-p
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
5bb776c432
|
|||
|
1c36292b1f
|
|||
|
79fe9dc2b3
|
|||
|
0353d31355
|
|||
|
afa4a3a4ea
|
|||
|
6579e9f565
|
|||
| 7a222fc446 | |||
|
da7b32cbba
|
|||
| 6faee6177d | |||
|
9a41c959ca
|
|||
| 00f47a1598 |
@@ -70,11 +70,14 @@ log_init(stbbr_log_t loglevel)
|
||||
void
|
||||
log_println(stbbr_log_t loglevel, const char * const msg, ...)
|
||||
{
|
||||
if (!logready || loglevel < minlevel) {
|
||||
pthread_mutex_lock(&loglock);
|
||||
|
||||
// Check logready AFTER acquiring lock to prevent race with log_close
|
||||
if (!logready || !logp || loglevel < minlevel) {
|
||||
pthread_mutex_unlock(&loglock);
|
||||
return;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&loglock);
|
||||
va_list arg;
|
||||
va_start(arg, msg);
|
||||
GString *fmt_msg = g_string_new(NULL);
|
||||
|
||||
@@ -109,6 +109,7 @@ read_stream(void)
|
||||
while (TRUE) {
|
||||
if (kill_recv) {
|
||||
_shutdown();
|
||||
g_string_free(stream, TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -167,6 +168,7 @@ read_stream(void)
|
||||
memset(buf, 0, sizeof(buf));
|
||||
}
|
||||
|
||||
g_string_free(stream, TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -434,8 +436,12 @@ _start_server_cb(void* userdata)
|
||||
int c = sizeof(struct sockaddr_in);
|
||||
int client_socket;
|
||||
errno = 0;
|
||||
// DEBUG removed
|
||||
while ((client_socket = accept(listen_socket, (struct sockaddr *)&client_addr, (socklen_t*)&c)) == -1) {
|
||||
if (kill_recv) {
|
||||
log_println(STBBR_LOGINFO, "Accept loop interrupted by stop request");
|
||||
_shutdown();
|
||||
return NULL;
|
||||
}
|
||||
if (errno != EAGAIN && errno != EWOULDBLOCK) {
|
||||
log_println(STBBR_LOGERROR, "Accept failed: %s", strerror(errno));
|
||||
return NULL;
|
||||
@@ -475,8 +481,7 @@ _shutdown(void)
|
||||
|
||||
parser_close();
|
||||
|
||||
shutdown(listen_socket, 2);
|
||||
while (recv(listen_socket, NULL, 1, 0) > 0) {}
|
||||
shutdown(listen_socket, SHUT_RDWR);
|
||||
close(listen_socket);
|
||||
|
||||
prime_free_all();
|
||||
|
||||
@@ -299,7 +299,9 @@ stanza_parse(char *stanza_text)
|
||||
XML_Parse(parser, stanza_text, strlen(stanza_text), 0);
|
||||
XML_ParserFree(parser);
|
||||
|
||||
return state->curr_stanza;
|
||||
XMPPStanza *result = state->curr_stanza;
|
||||
free(state);
|
||||
return result;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -63,6 +63,7 @@ verify_any(char *stanza_text, gboolean ign_timeout)
|
||||
usleep(1000 * 50);
|
||||
elapsed = g_timer_elapsed(timer, NULL);
|
||||
}
|
||||
g_timer_destroy(timer);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
@@ -71,6 +72,7 @@ verify_any(char *stanza_text, gboolean ign_timeout)
|
||||
log_println(STBBR_LOGINFO, "VERIFY FAIL: %s", stanza_text);
|
||||
}
|
||||
|
||||
stanza_free(stanza);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -94,6 +96,7 @@ verify_last(char *stanza_text)
|
||||
usleep(1000 * 50);
|
||||
elapsed = g_timer_elapsed(timer, NULL);
|
||||
}
|
||||
g_timer_destroy(timer);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
@@ -104,5 +107,6 @@ verify_last(char *stanza_text)
|
||||
stanzas_debug_last();
|
||||
}
|
||||
|
||||
stanza_free(stanza);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ xmppclient_end_session(XMPPClient *client)
|
||||
|
||||
if (client->sock) {
|
||||
shutdown(client->sock, 2);
|
||||
while (recv(client->sock, NULL, 1, 0) > 0) {}
|
||||
char discard_buf; while (recv(client->sock, &discard_buf, 1, 0) > 0) {}
|
||||
close(client->sock);
|
||||
}
|
||||
free(client->ip);
|
||||
|
||||
Reference in New Issue
Block a user