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