# HG changeset patch # User Mark Doliner # Date 1046760020 0 # Node ID 440d3d870b84a6a469ff45ac18464ec7307b8a26 # Parent 8cae3660611192904af11bb018a3a159c1490d64 [gaim-migrate @ 4956] This is a fix for the whole "The Dude received a file but it doesn't agree with original thing." Now it agrees with the original even if it doesn't agree with the original. I should fix it. I'll do it later, cutie. I realized that I want to store a bunch of this stuff in libfaim rather than oscar. And I'm going to outsource development and try to synergize with a group of wood nymphs. committer: Tailor Script diff -r 8cae36606111 -r 440d3d870b84 src/gtkft.c --- a/src/gtkft.c Tue Mar 04 02:31:05 2003 +0000 +++ b/src/gtkft.c Tue Mar 04 06:40:20 2003 +0000 @@ -161,7 +161,7 @@ *time_remaining = g_strdup("Unknown"); } else if (gaim_xfer_is_completed(xfer)) { - *time_remaining = g_strdup("Done."); + *time_remaining = g_strdup("Finished"); } else { int h, m, s; @@ -878,7 +878,7 @@ gtk_list_store_set(GTK_LIST_STORE(xfer_dialog->model), &data->iter, COLUMN_STATUS, pixbuf, - COLUMN_REMAINING, "Finished.", + COLUMN_REMAINING, "Finished", -1); g_object_unref(pixbuf); diff -r 8cae36606111 -r 440d3d870b84 src/protocols/oscar/aim.h --- a/src/protocols/oscar/aim.h Tue Mar 04 02:31:05 2003 +0000 +++ b/src/protocols/oscar/aim.h Tue Mar 04 06:40:20 2003 +0000 @@ -1005,7 +1005,7 @@ faim_export aim_conn_t *aim_odc_initiate(aim_session_t *sess, const char *sn); faim_export aim_conn_t *aim_odc_connect(aim_session_t *sess, const char *sn, const char *addr, const fu8_t *cookie); faim_export aim_conn_t *aim_sendfile_listen(aim_session_t *sess, const fu8_t *cookie, const fu8_t *ip, fu16_t port); -faim_export int aim_oft_sendheader(aim_session_t *sess, aim_conn_t *conn, fu16_t type, const fu8_t *cookie, const char *filename, fu16_t filesdone, fu16_t numfiles, fu32_t size, fu32_t totsize, fu32_t modtime, fu32_t checksum, fu8_t flags); +faim_export int aim_oft_sendheader(aim_session_t *sess, aim_conn_t *conn, fu16_t type, const fu8_t *cookie, const char *filename, fu16_t filesdone, fu16_t numfiles, fu32_t size, fu32_t totsize, fu32_t modtime, fu32_t checksum, fu8_t flags, fu32_t bytesreceived, fu32_t recvcsum); diff -r 8cae36606111 -r 440d3d870b84 src/protocols/oscar/ft.c --- a/src/protocols/oscar/ft.c Tue Mar 04 02:31:05 2003 +0000 +++ b/src/protocols/oscar/ft.c Tue Mar 04 06:40:20 2003 +0000 @@ -739,7 +739,7 @@ * "AIM_CB_OFT_DONE" message, and "0x02" for everything else. * @return Return 0 if no errors, otherwise return the error number. */ -faim_export int aim_oft_sendheader(aim_session_t *sess, aim_conn_t *conn, fu16_t type, const fu8_t *cookie, const char *filename, fu16_t filesdone, fu16_t numfiles, fu32_t size, fu32_t totsize, fu32_t modtime, fu32_t checksum, fu8_t flags) +faim_export int aim_oft_sendheader(aim_session_t *sess, aim_conn_t *conn, fu16_t type, const fu8_t *cookie, const char *filename, fu16_t filesdone, fu16_t numfiles, fu32_t size, fu32_t totsize, fu32_t modtime, fu32_t checksum, fu8_t flags, fu32_t bytesreceived, fu32_t recvcsum) { aim_frame_t *newoft; struct aim_fileheader_t *fh; @@ -765,9 +765,11 @@ fh->size = size; fh->modtime = modtime; fh->checksum = checksum; + fh->nrecvd = bytesreceived; + fh->recvcsum = recvcsum; strncpy(fh->idstring, "OFT_Windows ICBMFT V1.1 32", sizeof(fh->idstring)); - fh->flags = 0x02; + fh->flags = flags; fh->lnameoffset = 0x1a; fh->lsizeoffset = 0x10; memset(fh->dummy, 0, sizeof(fh->dummy)); diff -r 8cae36606111 -r 440d3d870b84 src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Tue Mar 04 02:31:05 2003 +0000 +++ b/src/protocols/oscar/oscar.c Tue Mar 04 06:40:20 2003 +0000 @@ -180,8 +180,8 @@ /* BBB */ struct oscar_xfer_data { fu8_t cookie[8]; - fu16_t modtime; - fu16_t checksum; + fu32_t modtime; + fu32_t checksum; aim_conn_t *conn; struct gaim_xfer *xfer; struct gaim_connection *gc; @@ -360,8 +360,8 @@ xfer->watcher = gaim_input_add(xfer_data->conn->fd, GAIM_INPUT_READ, oscar_callback, xfer_data->conn); aim_im_sendch2_sendfile_ask(od->sess, xfer_data->cookie, xfer->who, ip, xfer->local_port, xfer->filename, 1, xfer->size); aim_conn_addhandler(od->sess, xfer_data->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_established, 0); - /* Calculate a checksum thingy. This is ugly. - if ((fd = open(xfer->local_filename, O_RDONLY))) { + /* Calculate a checksum thingy. This is ugly. */ + /* if ((fd = open(xfer->local_filename, O_RDONLY))) { int bytes; char buf[1024]; xfer_data->checksum = 0xffff0000; @@ -433,7 +433,7 @@ return; if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) - aim_oft_sendheader(xfer_data->conn->sessv, xfer_data->conn, AIM_CB_OFT_DONE, xfer_data->cookie, xfer->filename, 1, 1, xfer->size, xfer->size, xfer_data->modtime, xfer_data->checksum, 0x21); + aim_oft_sendheader(xfer_data->conn->sessv, xfer_data->conn, AIM_CB_OFT_DONE, xfer_data->cookie, xfer->filename, 1, 1, xfer->size, xfer->size, xfer_data->modtime, xfer_data->checksum, 0x02, xfer->size, xfer_data->checksum); if ((gc = xfer_data->gc)) { if ((od = gc->proto_data)) @@ -479,7 +479,7 @@ if (!(xfer_data = xfer->data)) return; - aim_oft_checksum(buffer, size, xfer_data->checksum); + /* xfer_data->checksum = aim_oft_checksum(buffer, size, xfer_data->checksum); */ } static struct gaim_xfer * @@ -1755,7 +1755,7 @@ xfer->watcher = gaim_input_add(xfer_data->conn->fd, GAIM_INPUT_READ, oscar_callback, xfer_data->conn); /* Inform the other user that we are connected and ready to transfer */ - aim_oft_sendheader(sess, xfer_data->conn, AIM_CB_OFT_PROMPT, NULL, xfer->filename, 0, 1, xfer->size, xfer->size, time(NULL), xfer_data->checksum, 0x02); + aim_oft_sendheader(sess, xfer_data->conn, AIM_CB_OFT_PROMPT, NULL, xfer->filename, 0, 1, xfer->size, xfer->size, time(NULL), xfer_data->checksum, 0x02, 0, 0); return 0; } @@ -1829,7 +1829,7 @@ xfer->watcher = 0; /* XXX - convert the name from UTF-8 to UCS-2 if necessary, and pass the encoding to the call below */ - aim_oft_sendheader(xfer_data->conn->sessv, xfer_data->conn, AIM_CB_OFT_ACK, xfer_data->cookie, xfer->filename, 0, 1, xfer->size, xfer->size, fh->modtime, fh->checksum, 0x02); + aim_oft_sendheader(xfer_data->conn->sessv, xfer_data->conn, AIM_CB_OFT_ACK, xfer_data->cookie, xfer->filename, 0, 1, xfer->size, xfer->size, fh->modtime, fh->checksum, 0x02, 0, 0); gaim_xfer_start(xfer, xfer->fd, NULL, 0); return 0;