Fully working phone call support, might need some tweaks and checks
This commit is contained in:
parent
98d638b7b5
commit
f6fe5765d2
16
loop.c
16
loop.c
@ -517,12 +517,18 @@ int loop (void) {
|
||||
do_send_code (default_username);
|
||||
char *code = 0;
|
||||
size_t size = 0;
|
||||
printf ("Code from sms: ");
|
||||
printf ("Code from sms (if you did not receive an SMS and want to be called, type 0): ");
|
||||
while (1) {
|
||||
if (net_getline (&code, &size) == -1) {
|
||||
perror ("getline()");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
if (*code == '0') {
|
||||
printf ("You typed 0, switching to phone system.\n");
|
||||
do_phone_call (default_username);
|
||||
printf ("Calling you! Code: ");
|
||||
continue;
|
||||
}
|
||||
if (do_send_code_result (code) >= 0) {
|
||||
break;
|
||||
}
|
||||
@ -563,12 +569,18 @@ int loop (void) {
|
||||
DC_working = DC_list[dc_working_num];
|
||||
|
||||
do_send_code (default_username);
|
||||
printf ("Code from sms: ");
|
||||
printf ("Code from sms (if you did not receive an SMS and want to be called, type 0): ");
|
||||
while (1) {
|
||||
if (net_getline (&code, &size) == -1) {
|
||||
perror ("getline()");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
if (*code == '0') {
|
||||
printf ("You typed 0, switching to phone system.\n");
|
||||
do_phone_call (default_username);
|
||||
printf ("Calling you! Code: ");
|
||||
continue;
|
||||
}
|
||||
if (do_send_code_result_auth (code, first_name, last_name) >= 0) {
|
||||
break;
|
||||
}
|
||||
|
32
queries.c
32
queries.c
@ -468,6 +468,38 @@ void do_send_code (const char *user) {
|
||||
net_loop (0, code_is_sent);
|
||||
assert (want_dc_num == -1);
|
||||
}
|
||||
|
||||
|
||||
int phone_call_on_answer (struct query *q UU) {
|
||||
fetch_bool ();
|
||||
assert(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int phone_call_on_error (struct query *q UU, int error_code, int l, char *error) {
|
||||
logprintf ( "error_code = %d, error = %.*s\n", error_code, l, error);
|
||||
assert (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct query_methods phone_call_methods = {
|
||||
.on_answer = phone_call_on_answer,
|
||||
.on_error = phone_call_on_error
|
||||
};
|
||||
|
||||
void do_phone_call (const char *user) {
|
||||
logprintf ("calling user\n");
|
||||
suser = tstrdup (user);
|
||||
want_dc_num = 0;
|
||||
clear_packet ();
|
||||
do_insert_header ();
|
||||
out_int (CODE_auth_send_call);
|
||||
out_string (user);
|
||||
out_string (phone_code_hash);
|
||||
|
||||
logprintf ("do_phone_call: dc_num = %d\n", dc_working_num);
|
||||
send_query (DC_working, packet_ptr - packet_buffer, packet_buffer, &phone_call_methods, 0);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ Check phone */
|
||||
|
Loading…
x
Reference in New Issue
Block a user