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
|
||||
log_println(stbbr_log_t loglevel, const char * const msg, ...)
|
||||
{
|
||||
pthread_mutex_lock(&loglock);
|
||||
|
||||
// Check logready AFTER acquiring lock to prevent race with log_close
|
||||
if (!logready || !logp || loglevel < minlevel) {
|
||||
pthread_mutex_unlock(&loglock);
|
||||
if (!logready || loglevel < minlevel) {
|
||||
return;
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&loglock);
|
||||
va_list arg;
|
||||
va_start(arg, msg);
|
||||
GString *fmt_msg = g_string_new(NULL);
|
||||
|
||||
@@ -109,7 +109,6 @@ read_stream(void)
|
||||
while (TRUE) {
|
||||
if (kill_recv) {
|
||||
_shutdown();
|
||||
g_string_free(stream, TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -168,7 +167,6 @@ read_stream(void)
|
||||
memset(buf, 0, sizeof(buf));
|
||||
}
|
||||
|
||||
g_string_free(stream, TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -436,12 +434,8 @@ _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;
|
||||
@@ -481,7 +475,8 @@ _shutdown(void)
|
||||
|
||||
parser_close();
|
||||
|
||||
shutdown(listen_socket, SHUT_RDWR);
|
||||
shutdown(listen_socket, 2);
|
||||
while (recv(listen_socket, NULL, 1, 0) > 0) {}
|
||||
close(listen_socket);
|
||||
|
||||
prime_free_all();
|
||||
|
||||
@@ -299,9 +299,7 @@ stanza_parse(char *stanza_text)
|
||||
XML_Parse(parser, stanza_text, strlen(stanza_text), 0);
|
||||
XML_ParserFree(parser);
|
||||
|
||||
XMPPStanza *result = state->curr_stanza;
|
||||
free(state);
|
||||
return result;
|
||||
return state->curr_stanza;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -63,7 +63,6 @@ verify_any(char *stanza_text, gboolean ign_timeout)
|
||||
usleep(1000 * 50);
|
||||
elapsed = g_timer_elapsed(timer, NULL);
|
||||
}
|
||||
g_timer_destroy(timer);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
@@ -72,7 +71,6 @@ verify_any(char *stanza_text, gboolean ign_timeout)
|
||||
log_println(STBBR_LOGINFO, "VERIFY FAIL: %s", stanza_text);
|
||||
}
|
||||
|
||||
stanza_free(stanza);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -96,7 +94,6 @@ verify_last(char *stanza_text)
|
||||
usleep(1000 * 50);
|
||||
elapsed = g_timer_elapsed(timer, NULL);
|
||||
}
|
||||
g_timer_destroy(timer);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
@@ -107,6 +104,5 @@ 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);
|
||||
char discard_buf; while (recv(client->sock, &discard_buf, 1, 0) > 0) {}
|
||||
while (recv(client->sock, NULL, 1, 0) > 0) {}
|
||||
close(client->sock);
|
||||
}
|
||||
free(client->ip);
|
||||
|
||||
Reference in New Issue
Block a user