#include "proxyscan.h"
#include "../irc/irc.h"
+#include "../core/error.h"
pendingscan *ps_normalqueue=NULL;
pendingscan *ps_prioqueue=NULL;
unsigned long countpendingscan=0;
-void queuescan(unsigned int IP, short scantype, unsigned short port, char class, time_t when) {
+void queuescan(patricia_node_t *node, short scantype, unsigned short port, char class, time_t when) {
pendingscan *psp, *psp2;
/* check if the IP/port combo is already queued - don't queue up
psp = ps_prioqueue;
while (psp != NULL)
{
- if (psp->IP == IP && psp->type == scantype &&
+ if (psp->node == node && psp->type == scantype &&
psp->port == port && psp->class == class)
{
/* found it, ignore */
psp = ps_normalqueue;
while (psp != NULL)
{
- if (psp->IP == IP && psp->type == scantype &&
+ if (psp->node == node && psp->type == scantype &&
psp->port == port && psp->class == class)
{
/* found it, ignore */
/* If there are scans spare, just start it immediately..
* provided we're not supposed to wait */
if (activescans < maxscans && when<=time(NULL) && (ps_start_ts+120 <= time(NULL))) {
- startscan(IP, scantype, port, class);
+ startscan(node, scantype, port, class);
return;
}
/* We have to queue it */
- psp = (struct pendingscan *) malloc(sizeof(pendingscan));
- if (!psp)
- {
- /* shutdown due to no memory */
- irc_send("%s SQ %s 0 :Out of memory - exiting.",mynumeric->content,myserver->content);
- irc_disconnected();
- exit(0);
- } else {
- countpendingscan++;
- }
- psp->IP=IP;
+ if (!(psp=(struct pendingscan *)malloc(sizeof(pendingscan))))
+ Error("proxyscan",ERR_STOP,"Unable to allocate memory");
+
+ countpendingscan++;
+
+ psp->node=node;
psp->type=scantype;
psp->port=port;
psp->class=class;
}
if (psp) {
- startscan(psp->IP, psp->type, psp->port, psp->class);
+ startscan(psp->node, psp->type, psp->port, psp->class);
free(psp);
countpendingscan--;
psp=NULL;