@@ -650,6 +650,8 @@ readsocks(const char *fname)
ip4 = strdup(bufp);
else if (!strcmp(type, STR("+ip6")))
ip6 = strdup(bufp);
+ else if (!strcmp(type, STR("+serv_cache")))
+ dprintf(DP_CACHE, bufp);
if (enc)
free(buf_ptr);
@@ -679,7 +681,7 @@ readsocks(const char *fname)
add_server(nserv);
curserv = 0;
rehash_server(dcc[servidx].host, nick);
- dprintf(DP_DUMP, "VERSION\n");
+ replay_cache(servidx);
reset_chans = 1;
}
@@ -371,6 +371,17 @@ char *splitnicks(char **rest)
return r;
+void replay_cache(int idx) {
+ struct msgq *r = NULL, *q = NULL;
+
+ for (r = cacheq.head; r; r = q) {
+ q = r->next;
+ server_activity(idx, r->msg, r->len);
+ free(r->msg);
+ free(r);
+ }
+}
static bool fast_deq(int which)
{
if (!use_fastdeq)
@@ -72,6 +72,7 @@ void clearq(struct server_list *);
void nuke_server(const char *);
bool match_my_nick(char *);
void rehash_server(const char *, const char *);
+void replay_cache(int);
void join_chans();
void check_hostmask();
void next_server(int *, char *, port_t *, char *);