parent
77dccacd02
commit
9e11280e52
3 changed files with 35 additions and 14 deletions
|
@ -81,7 +81,7 @@ static int dcc_global_throttle; /* 0x1 = sends, 0x2 = gets */
|
||||||
static gint64 dcc_sendcpssum, dcc_getcpssum;
|
static gint64 dcc_sendcpssum, dcc_getcpssum;
|
||||||
|
|
||||||
static struct DCC *new_dcc (void);
|
static struct DCC *new_dcc (void);
|
||||||
static void dcc_close (struct DCC *dcc, int dccstat, int destroy);
|
static void dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy);
|
||||||
static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *);
|
static gboolean dcc_send_data (GIOChannel *, GIOCondition, struct DCC *);
|
||||||
static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *);
|
static gboolean dcc_read (GIOChannel *, GIOCondition, struct DCC *);
|
||||||
static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc);
|
static gboolean dcc_read_ack (GIOChannel *source, GIOCondition condition, struct DCC *dcc);
|
||||||
|
@ -293,6 +293,8 @@ dcc_check_timeouts (void)
|
||||||
if (prefs.hex_dcc_remove)
|
if (prefs.hex_dcc_remove)
|
||||||
dcc_close (dcc, 0, TRUE);
|
dcc_close (dcc, 0, TRUE);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
list = next;
|
list = next;
|
||||||
}
|
}
|
||||||
|
@ -367,7 +369,7 @@ dcc_connect_sok (struct DCC *dcc)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dcc_close (struct DCC *dcc, int dccstat, int destroy)
|
dcc_close (struct DCC *dcc, enum dcc_state dccstat, int destroy)
|
||||||
{
|
{
|
||||||
if (dcc->wiotag)
|
if (dcc->wiotag)
|
||||||
{
|
{
|
||||||
|
@ -1606,6 +1608,8 @@ dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
|
||||||
EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session,
|
EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session,
|
||||||
dcc->nick, host, NULL, NULL, 0);
|
dcc->nick, host, NULL, NULL, 0);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fe_dcc_update (dcc);
|
fe_dcc_update (dcc);
|
||||||
|
@ -2183,6 +2187,8 @@ dcc_get (struct DCC *dcc)
|
||||||
case STAT_ABORTED:
|
case STAT_ABORTED:
|
||||||
dcc_close (dcc, 0, TRUE);
|
dcc_close (dcc, 0, TRUE);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2265,6 +2271,9 @@ dcc_chat (struct session *sess, char *nick, int passive)
|
||||||
case STAT_ABORTED:
|
case STAT_ABORTED:
|
||||||
case STAT_FAILED:
|
case STAT_FAILED:
|
||||||
dcc_close (dcc, 0, TRUE);
|
dcc_close (dcc, 0, TRUE);
|
||||||
|
break;
|
||||||
|
case STAT_DONE:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dcc = find_dcc (nick, "", TYPE_CHATRECV);
|
dcc = find_dcc (nick, "", TYPE_CHATRECV);
|
||||||
|
@ -2278,6 +2287,9 @@ dcc_chat (struct session *sess, char *nick, int passive)
|
||||||
case STAT_FAILED:
|
case STAT_FAILED:
|
||||||
case STAT_ABORTED:
|
case STAT_ABORTED:
|
||||||
dcc_close (dcc, 0, TRUE);
|
dcc_close (dcc, 0, TRUE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,17 +25,21 @@
|
||||||
#ifndef HEXCHAT_DCC_H
|
#ifndef HEXCHAT_DCC_H
|
||||||
#define HEXCHAT_DCC_H
|
#define HEXCHAT_DCC_H
|
||||||
|
|
||||||
#define STAT_QUEUED 0
|
enum dcc_state {
|
||||||
#define STAT_ACTIVE 1
|
STAT_QUEUED = 0,
|
||||||
#define STAT_FAILED 2
|
STAT_ACTIVE,
|
||||||
#define STAT_DONE 3
|
STAT_FAILED,
|
||||||
#define STAT_CONNECTING 4
|
STAT_DONE,
|
||||||
#define STAT_ABORTED 5
|
STAT_CONNECTING,
|
||||||
|
STAT_ABORTED
|
||||||
|
};
|
||||||
|
|
||||||
#define TYPE_SEND 0
|
enum dcc_type {
|
||||||
#define TYPE_RECV 1
|
TYPE_SEND = 0,
|
||||||
#define TYPE_CHATRECV 2
|
TYPE_RECV,
|
||||||
#define TYPE_CHATSEND 3
|
TYPE_CHATRECV,
|
||||||
|
TYPE_CHATSEND
|
||||||
|
};
|
||||||
|
|
||||||
#define CPS_AVG_WINDOW 10
|
#define CPS_AVG_WINDOW 10
|
||||||
|
|
||||||
|
@ -72,8 +76,8 @@ struct DCC
|
||||||
char *file; /* utf8 */
|
char *file; /* utf8 */
|
||||||
char *destfile; /* utf8 */
|
char *destfile; /* utf8 */
|
||||||
char *nick;
|
char *nick;
|
||||||
unsigned char type; /* 0 = SEND 1 = RECV 2 = CHAT */
|
enum dcc_type type;
|
||||||
unsigned char dccstat; /* 0 = QUEUED 1 = ACTIVE 2 = FAILED 3 = DONE */
|
enum dcc_state dccstat;
|
||||||
unsigned int resume_sent:1; /* resume request sent */
|
unsigned int resume_sent:1; /* resume request sent */
|
||||||
unsigned int fastsend:1;
|
unsigned int fastsend:1;
|
||||||
unsigned int ackoffset:1; /* is receiver sending acks as an offset from */
|
unsigned int ackoffset:1; /* is receiver sending acks as an offset from */
|
||||||
|
|
|
@ -713,6 +713,11 @@ dcc_dclick_cb (GtkTreeView *view, GtkTreePath *path,
|
||||||
case STAT_ABORTED:
|
case STAT_ABORTED:
|
||||||
case STAT_DONE:
|
case STAT_DONE:
|
||||||
dcc_abort (dcc->serv->front_session, dcc);
|
dcc_abort (dcc->serv->front_session, dcc);
|
||||||
|
break;
|
||||||
|
case STAT_QUEUED:
|
||||||
|
case STAT_ACTIVE:
|
||||||
|
case STAT_CONNECTING:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue