# HG changeset patch # User Mark Doliner # Date 1048140861 0 # Node ID 60d8c5ad77f9d9c2d37b8e484c2f2d500d447a5d # Parent 3411fdaa54fa77c28747dd066a631034afa4f70e [gaim-migrate @ 5163] Aside from my usually bit o' cleanup, this commit changes the function used to send away messages auto-responses. The auto-response is now sent with the same function as normal messages, instead of calling a simpler abstracted function in libfaim which then called the normal function. This has 2 positive effects: 1) Auto-responses will have the correct encoding set 2) Auto-responses will contain the "I have an icon" flag. If the other user sends you 1 more message after they get your away message, they are able to get your buddy icon. Something about dreams as fragile as bubbles Well perhaps it won't apply committer: Tailor Script diff -r 3411fdaa54fa -r 60d8c5ad77f9 src/protocols/oscar/im.c --- a/src/protocols/oscar/im.c Thu Mar 20 05:24:41 2003 +0000 +++ b/src/protocols/oscar/im.c Thu Mar 20 06:14:21 2003 +0000 @@ -350,16 +350,14 @@ aimbs_putraw(&fr->data, args->msg, args->msglen); } - /* Set the Request Acknowledge flag */ - if (args->flags & AIM_IMFLAGS_ACK) { - aimbs_put16(&fr->data, 0x0003); - aimbs_put16(&fr->data, 0x0000); - } - /* Set the Autoresponse flag */ if (args->flags & AIM_IMFLAGS_AWAY) { aimbs_put16(&fr->data, 0x0004); aimbs_put16(&fr->data, 0x0000); + } else if (args->flags & AIM_IMFLAGS_ACK) { + /* Set the Request Acknowledge flag */ + aimbs_put16(&fr->data, 0x0003); + aimbs_put16(&fr->data, 0x0000); } if (args->flags & AIM_IMFLAGS_OFFLINE) { diff -r 3411fdaa54fa -r 60d8c5ad77f9 src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Thu Mar 20 05:24:41 2003 +0000 +++ b/src/protocols/oscar/oscar.c Thu Mar 20 06:14:21 2003 +0000 @@ -4083,23 +4083,14 @@ int ret = 0; GError *err = NULL; - if (dim) { - if (dim->connected) { /* If we're not connected yet, send through server */ - /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */ - ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0); - if (ret == 0) - return 1; - else return ret; - } - debug_printf("Direct IM pending, but not connected; sending through server\n"); + if (dim && dim->connected) { + /* If we're directly connected, send a direct IM */ + /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */ + ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0); } else if (len != -1) { /* Trying to send an IM image outside of a direct connection. */ oscar_ask_direct_im(gc, name); - return -ENOTCONN; - } - - if (imflags & IM_FLAG_AWAY) { - ret = aim_im_sendch1(od->sess, name, AIM_IMFLAGS_AWAY, message); + ret = -ENOTCONN; } else { struct buddyinfo *bi; struct aim_sendimext_args args; @@ -4122,6 +4113,9 @@ args.featureslen = sizeof(features_aim); } + if (imflags & IM_FLAG_AWAY) + args.flags |= AIM_IMFLAGS_AWAY; + if (bi->ico_need) { debug_printf("Sending buddy icon request with message\n"); args.flags |= AIM_IMFLAGS_BUDDYREQ; @@ -4150,7 +4144,6 @@ bi->ico_informed = TRUE; } - fclose(file); g_free(buf); } @@ -4198,6 +4191,7 @@ ret = aim_im_sendch1_ext(od->sess, &args); } + if (ret >= 0) return 1; return ret;