---
gatchat/test-server.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/gatchat/test-server.c b/gatchat/test-server.c
index 28bad1d..f9bd9fa 100644
--- a/gatchat/test-server.c
+++ b/gatchat/test-server.c
@@ -128,6 +128,16 @@ static void ppp_connect(const char *iface, const char *local, const
char *peer,
execute(buf);
}
+static void at_server_resume(gpointer user)
+{
+ GAtServer *server = user;
+
+ g_at_server_resume(server);
+ g_at_server_set_debug(server, server_debug, "Server");
+
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_NO_CARRIER);
+}
+
static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer user)
{
GAtServer *server = user;
@@ -143,6 +153,11 @@ static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer
user)
return;
}
+ if (reason == G_AT_PPP_REASON_NET_FAIL) {
+ g_print("Failed to create tun\nNeed root privilege to configure PPP
interface\n");
+ return;
+ }
+
g_at_server_resume(server);
g_at_server_set_debug(server, server_debug, "Server");
@@ -164,11 +179,6 @@ static gboolean setup_ppp(gpointer user)
GAtServer *server = user;
GAtIO *io;
- if (getuid() != 0) {
- g_print("Need root privilege for PPP connection\n");
- return FALSE;
- }
-
io = g_at_server_get_io(server);
g_at_server_suspend(server);
@@ -187,6 +197,7 @@ static gboolean setup_ppp(gpointer user)
/* set connect and disconnect callbacks */
g_at_ppp_set_connect_function(ppp, ppp_connect, server);
g_at_ppp_set_disconnect_function(ppp, ppp_disconnect, server);
+ g_at_ppp_set_resume_function(ppp, at_server_resume, server);
g_idle_add(update_ppp, ppp);
--
1.7.1