libgaim/protocols/oscar/peer.c

changeset 15345
797936e968ff
parent 15322
cd268e368bc1
child 15354
52ba52a13827
equal deleted inserted replaced
15344:34b7f4e55861 15345:797936e968ff
1020 else if (args->type == OSCAR_CAPABILITY_SENDFILE) 1020 else if (args->type == OSCAR_CAPABILITY_SENDFILE)
1021 { 1021 {
1022 gchar *filename; 1022 gchar *filename;
1023 1023
1024 conn->xfer = gaim_xfer_new(account, GAIM_XFER_RECEIVE, sn); 1024 conn->xfer = gaim_xfer_new(account, GAIM_XFER_RECEIVE, sn);
1025 conn->xfer->data = conn; 1025 if (conn->xfer)
1026 gaim_xfer_ref(conn->xfer); 1026 {
1027 gaim_xfer_set_size(conn->xfer, args->info.sendfile.totsize); 1027 conn->xfer->data = conn;
1028 1028 gaim_xfer_ref(conn->xfer);
1029 /* Set the file name */ 1029 gaim_xfer_set_size(conn->xfer, args->info.sendfile.totsize);
1030 if (g_utf8_validate(args->info.sendfile.filename, -1, NULL)) 1030
1031 filename = g_strdup(args->info.sendfile.filename); 1031 /* Set the file name */
1032 else 1032 if (g_utf8_validate(args->info.sendfile.filename, -1, NULL))
1033 filename = gaim_utf8_salvage(args->info.sendfile.filename); 1033 filename = g_strdup(args->info.sendfile.filename);
1034 1034 else
1035 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) 1035 filename = gaim_utf8_salvage(args->info.sendfile.filename);
1036 { 1036
1037 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR)
1038 {
1039 /*
1040 * If they are sending us a directory then the last character
1041 * of the file name will be an asterisk. We don't want to
1042 * save stuff to a directory named "*" so we remove the
1043 * asterisk from the file name.
1044 */
1045 char *tmp = strrchr(filename, '\\');
1046 if ((tmp != NULL) && (tmp[1] == '*'))
1047 tmp[0] = '\0';
1048 }
1049 gaim_xfer_set_filename(conn->xfer, filename);
1050 g_free(filename);
1051
1037 /* 1052 /*
1038 * If they are sending us a directory then the last character 1053 * Set the message, unless this is the dummy message from an
1039 * of the file name will be an asterisk. We don't want to 1054 * ICQ client or an empty message from an AIM client.
1040 * save stuff to a directory named "*" so we remove the 1055 * TODO: Maybe we should strip HTML and then see if strlen>0?
1041 * asterisk from the file name.
1042 */ 1056 */
1043 char *tmp = strrchr(filename, '\\'); 1057 if ((message != NULL) &&
1044 if ((tmp != NULL) && (tmp[1] == '*')) 1058 (g_ascii_strncasecmp(message, "<ICQ_COOL_FT>", 13) != 0) &&
1045 tmp[0] = '\0'; 1059 (g_ascii_strcasecmp(message, "<HTML>") != 0))
1046 } 1060 {
1047 gaim_xfer_set_filename(conn->xfer, filename); 1061 gaim_xfer_set_message(conn->xfer, message);
1048 g_free(filename); 1062 }
1049 1063
1050 /* 1064 /* Setup our I/O op functions */
1051 * Set the message (unless this is the dummy message from an 1065 gaim_xfer_set_init_fnc(conn->xfer, peer_oft_recvcb_init);
1052 * ICQ client or an empty message from an AIM client. 1066 gaim_xfer_set_end_fnc(conn->xfer, peer_oft_recvcb_end);
1053 * TODO: Maybe we should strip HTML and then see if strlen>0? 1067 gaim_xfer_set_request_denied_fnc(conn->xfer, peer_oft_cb_generic_cancel);
1054 */ 1068 gaim_xfer_set_cancel_recv_fnc(conn->xfer, peer_oft_cb_generic_cancel);
1055 if ((message != NULL) && 1069 gaim_xfer_set_ack_fnc(conn->xfer, peer_oft_recvcb_ack_recv);
1056 (g_ascii_strncasecmp(message, "<ICQ_COOL_FT>", 13) != 0) && 1070
1057 (g_ascii_strcasecmp(message, "<HTML>") != 0)) 1071 /* Now perform the request */
1058 { 1072 gaim_xfer_request(conn->xfer);
1059 gaim_xfer_set_message(conn->xfer, message); 1073 }
1060 }
1061
1062 /* Setup our I/O op functions */
1063 gaim_xfer_set_init_fnc(conn->xfer, peer_oft_recvcb_init);
1064 gaim_xfer_set_end_fnc(conn->xfer, peer_oft_recvcb_end);
1065 gaim_xfer_set_request_denied_fnc(conn->xfer, peer_oft_cb_generic_cancel);
1066 gaim_xfer_set_cancel_recv_fnc(conn->xfer, peer_oft_cb_generic_cancel);
1067 gaim_xfer_set_ack_fnc(conn->xfer, peer_oft_recvcb_ack_recv);
1068
1069 /* Now perform the request */
1070 gaim_xfer_request(conn->xfer);
1071 } 1074 }
1072 } 1075 }
1073 1076
1074 /*******************************************************************/ 1077 /*******************************************************************/
1075 /* End code for establishing a peer connection */ 1078 /* End code for establishing a peer connection */

mercurial