dcc: Introduce dcc_type and dcc_state enums

Closes #1705
This commit is contained in:
Ben Gamari 2016-05-08 09:48:13 +02:00 committed by Patrick Griffis
parent 77dccacd02
commit 9e11280e52
3 changed files with 35 additions and 14 deletions

View file

@ -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;
} }

View file

@ -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 */

View file

@ -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;
} }
} }