| 585 serv_got_typing_stopped(gc, conn->sn); |
587 serv_got_typing_stopped(gc, conn->sn); |
| 586 } |
588 } |
| 587 |
589 |
| 588 if (frame->payload.len > 0) |
590 if (frame->payload.len > 0) |
| 589 { |
591 { |
| |
592 if (frame->payload.len > DIRECTIM_MAX_FILESIZE) |
| |
593 { |
| |
594 gchar *tmp, *size1, *size2; |
| |
595 PurpleAccount *account; |
| |
596 PurpleConversation *conv; |
| |
597 |
| |
598 size1 = purple_str_size_to_units(frame->payload.len); |
| |
599 size2 = purple_str_size_to_units(DIRECTIM_MAX_FILESIZE); |
| |
600 tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM. Try using file transfer instead.\n"), conn->sn, size1, size2); |
| |
601 g_free(size1); |
| |
602 g_free(size2); |
| |
603 |
| |
604 account = purple_connection_get_account(conn->od->gc); |
| |
605 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn); |
| |
606 purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); |
| |
607 g_free(tmp); |
| |
608 |
| |
609 peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); |
| |
610 return; |
| |
611 } |
| |
612 |
| 590 /* We have payload data! Switch to the ODC watcher to read it. */ |
613 /* We have payload data! Switch to the ODC watcher to read it. */ |
| 591 frame->payload.data = g_new(guint8, frame->payload.len); |
614 frame->payload.data = g_new(guint8, frame->payload.len); |
| 592 frame->payload.offset = 0; |
615 frame->payload.offset = 0; |
| 593 conn->frame = frame; |
616 conn->frame = frame; |
| 594 purple_input_remove(conn->watcher_incoming); |
617 purple_input_remove(conn->watcher_incoming); |