--- a/libpurple/server.c Wed Aug 30 20:33:01 2017 -0300 +++ b/libpurple/server.c Thu Aug 31 22:40:50 2017 -0500 @@ -894,9 +894,11 @@ if (gc) { protocol = purple_connection_get_protocol(gc); - if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive) || - purple_protocol_xfer_iface_can_receive(protocol, gc, who)) - - purple_protocol_xfer_iface_send(protocol, gc, who, file); + if(PURPLE_IS_PROTOCOL_XFER(protocol)) { + PurpleProtocolXferInterface *iface = PURPLE_PROTOCOL_XFER_GET_IFACE(protocol); + if(purple_protocol_xfer_can_receive(iface, gc, who)) { + purple_protocol_xfer_send(iface, gc, who, file); + } + } } }