ssb: Tidy up some of the more common reasons for disconnect.
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
Some checks failed
Build Tilde Friends / Build-All (push) Has been cancelled
This commit is contained in:
parent
2f36db9142
commit
aff98110e0
27
src/ssb.c
27
src/ssb.c
@ -1573,7 +1573,7 @@ static bool _tf_ssb_connection_recv_pop(tf_ssb_connection_t* connection, uint8_t
|
|||||||
if (size >= sizeof(connection->recv_buffer))
|
if (size >= sizeof(connection->recv_buffer))
|
||||||
{
|
{
|
||||||
char message[256];
|
char message[256];
|
||||||
snprintf(message, sizeof(message), "Trying to pop a message (%zd) larger than the connection's receive buffer (%zd).", size, sizeof(connection->recv_buffer));
|
snprintf(message, sizeof(message), "Message (%zd) larger than the connection's receive buffer (%zd)", size, sizeof(connection->recv_buffer));
|
||||||
tf_ssb_connection_close(connection, message);
|
tf_ssb_connection_close(connection, message);
|
||||||
}
|
}
|
||||||
if (connection->recv_size < size)
|
if (connection->recv_size < size)
|
||||||
@ -1944,7 +1944,7 @@ static void _tf_ssb_connection_destroy(tf_ssb_connection_t* connection, const ch
|
|||||||
if (it->tunnel_connection == connection)
|
if (it->tunnel_connection == connection)
|
||||||
{
|
{
|
||||||
it->tunnel_connection = NULL;
|
it->tunnel_connection = NULL;
|
||||||
tf_ssb_connection_close(it, "tunnel closed");
|
tf_ssb_connection_close(it, "Tunnel closed");
|
||||||
again = true;
|
again = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2626,7 +2626,7 @@ void tf_ssb_destroy(tf_ssb_t* ssb)
|
|||||||
while (connection)
|
while (connection)
|
||||||
{
|
{
|
||||||
tf_ssb_connection_t* next = connection->next;
|
tf_ssb_connection_t* next = connection->next;
|
||||||
tf_ssb_connection_close(connection, "Shutting down.");
|
tf_ssb_connection_close(connection, "Shutting down");
|
||||||
connection = next;
|
connection = next;
|
||||||
}
|
}
|
||||||
uv_run(ssb->loop, UV_RUN_NOWAIT);
|
uv_run(ssb->loop, UV_RUN_NOWAIT);
|
||||||
@ -2841,8 +2841,27 @@ static void _tf_ssb_connection_tunnel_callback(
|
|||||||
tf_ssb_connection_remove_request(connection, -request_number);
|
tf_ssb_connection_remove_request(connection, -request_number);
|
||||||
tf_ssb_connection_rpc_send(connection, flags, -request_number, NULL, (const uint8_t*)"false", strlen("false"), NULL, NULL, NULL);
|
tf_ssb_connection_rpc_send(connection, flags, -request_number, NULL, (const uint8_t*)"false", strlen("false"), NULL, NULL, NULL);
|
||||||
|
|
||||||
|
JSContext* context = tf_ssb_connection_get_context(connection);
|
||||||
|
JSValue message_val = JS_GetPropertyStr(context, args, "message");
|
||||||
|
JSValue stack_val = JS_GetPropertyStr(context, args, "stack");
|
||||||
|
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
snprintf(buffer, sizeof(buffer), "tunnel error: %.*s", (int)size, message);
|
if (!JS_IsUndefined(message_val))
|
||||||
|
{
|
||||||
|
const char* message_string = JS_ToCString(context, message_val);
|
||||||
|
const char* stack_string = JS_ToCString(context, stack_val);
|
||||||
|
snprintf(buffer, sizeof(buffer), "Tunnel error: %s\n%s", message_string, stack_string);
|
||||||
|
JS_FreeCString(context, message_string);
|
||||||
|
JS_FreeCString(context, stack_string);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf(buffer, sizeof(buffer), "Tunnel error: %.*s", (int)size, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JS_FreeValue(context, stack_val);
|
||||||
|
JS_FreeValue(context, message_val);
|
||||||
|
|
||||||
tf_ssb_connection_close(tunnel, buffer);
|
tf_ssb_connection_close(tunnel, buffer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1198,7 +1198,7 @@ static JSValue _tf_ssb_closeConnection(JSContext* context, JSValueConst this_val
|
|||||||
tf_ssb_connection_t* connection = tf_ssb_connection_get(ssb, id);
|
tf_ssb_connection_t* connection = tf_ssb_connection_get(ssb, id);
|
||||||
if (connection)
|
if (connection)
|
||||||
{
|
{
|
||||||
tf_ssb_connection_close(connection, "Close requested by user.");
|
tf_ssb_connection_close(connection, "Closed by user");
|
||||||
}
|
}
|
||||||
JS_FreeCString(context, id);
|
JS_FreeCString(context, id);
|
||||||
return connection ? JS_TRUE : JS_FALSE;
|
return connection ? JS_TRUE : JS_FALSE;
|
||||||
|
@ -293,8 +293,28 @@ static void _tf_ssb_rpc_tunnel_callback(tf_ssb_connection_t* connection, uint8_t
|
|||||||
if (flags & k_ssb_rpc_flag_end_error)
|
if (flags & k_ssb_rpc_flag_end_error)
|
||||||
{
|
{
|
||||||
tf_ssb_connection_remove_request(connection, request_number);
|
tf_ssb_connection_remove_request(connection, request_number);
|
||||||
|
|
||||||
|
JSContext* context = tf_ssb_connection_get_context(connection);
|
||||||
|
JSValue message_val = JS_GetPropertyStr(context, args, "message");
|
||||||
|
JSValue stack_val = JS_GetPropertyStr(context, args, "stack");
|
||||||
|
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
snprintf(buffer, sizeof(buffer), "error from tunnel: %.*s", (int)size, message);
|
if (!JS_IsUndefined(message_val))
|
||||||
|
{
|
||||||
|
const char* message_string = JS_ToCString(context, message_val);
|
||||||
|
const char* stack_string = JS_ToCString(context, stack_val);
|
||||||
|
snprintf(buffer, sizeof(buffer), "Error from tunnel: %s\n%s", message_string, stack_string);
|
||||||
|
JS_FreeCString(context, message_string);
|
||||||
|
JS_FreeCString(context, stack_string);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snprintf(buffer, sizeof(buffer), "Error from tunnel: %.*s", (int)size, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JS_FreeValue(context, stack_val);
|
||||||
|
JS_FreeValue(context, message_val);
|
||||||
|
|
||||||
tf_ssb_connection_close(tun->connection, buffer);
|
tf_ssb_connection_close(tun->connection, buffer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user