Merge remote-tracking branch 'lucian/master'

Conflicts:
	src/server_events.c
This commit is contained in:
James Booth
2014-04-23 00:20:34 +01:00

View File

@@ -208,21 +208,21 @@ handle_incoming_message(char *from, char *message, gboolean priv)
gboolean was_decrypted = FALSE; gboolean was_decrypted = FALSE;
char *newmessage; char *newmessage;
if (!priv) { char *policy = prefs_get_string(PREF_OTR_POLICY);
char *whitespace_base = strstr(message,OTRL_MESSAGE_TAG_BASE);
if (!priv) {
//check for OTR whitespace (opportunistic or always) //check for OTR whitespace (opportunistic or always)
char *policy = prefs_get_string(PREF_OTR_POLICY);
if (strcmp(policy, "opportunistic") == 0 || strcmp(policy, "always") == 0) { if (strcmp(policy, "opportunistic") == 0 || strcmp(policy, "always") == 0) {
char *whitespace_base = strstr(message,OTRL_MESSAGE_TAG_BASE);
if (whitespace_base) { if (whitespace_base) {
if (strstr(message, OTRL_MESSAGE_TAG_V2) || strstr(message, OTRL_MESSAGE_TAG_V1)) { if (strstr(message, OTRL_MESSAGE_TAG_V2) || strstr(message, OTRL_MESSAGE_TAG_V1)) {
// Remove whitespace pattern for proper display in UI // Remove whitespace pattern for proper display in UI
// Handle both BASE+TAGV1/2(16+8) and BASE+TAGV1+TAGV2(16+8+8) // Handle both BASE+TAGV1/2(16+8) and BASE+TAGV1+TAGV2(16+8+8)
int tag_length = 24; int tag_length = 24;
if (strstr(message, OTRL_MESSAGE_TAG_V2) && strstr(message, OTRL_MESSAGE_TAG_V1)) { if (strstr(message, OTRL_MESSAGE_TAG_V2) && strstr(message, OTRL_MESSAGE_TAG_V1)) {
tag_length = 32; tag_length = 32;
} }
memmove(whitespace_base, whitespace_base+tag_length, tag_length); memmove(whitespace_base, whitespace_base+tag_length, tag_length);
log_debug("<%s>", message);
char *otr_query_message = otr_start_query(); char *otr_query_message = otr_start_query();
cons_show("OTR Whitespace pattern detected. Attempting to start OTR session..."); cons_show("OTR Whitespace pattern detected. Attempting to start OTR session...");
message_send(otr_query_message, from); message_send(otr_query_message, from);
@@ -238,6 +238,11 @@ handle_incoming_message(char *from, char *message, gboolean priv)
} else { } else {
newmessage = message; newmessage = message;
} }
if (strcmp(policy, "always") == 0 && !was_decrypted && !whitespace_base) {
char *otr_query_message = otr_start_query();
cons_show("Attempting to start OTR session...");
message_send(otr_query_message, from);
}
ui_incoming_msg(from, newmessage, NULL, priv); ui_incoming_msg(from, newmessage, NULL, priv);