View | Details | Raw Unified | Return to bug 106717
Collapse All | Expand All

(-)src/forward.c (-6 / +6 lines)
Lines 135-141 Link Here
135
  
135
  
136
  for (serv = daemon->servers; serv; serv=serv->next)
136
  for (serv = daemon->servers; serv; serv=serv->next)
137
    /* domain matches take priority over NODOTS matches */
137
    /* domain matches take priority over NODOTS matches */
138
    if ((serv->flags & SERV_FOR_NODOTS) && *type != SERV_HAS_DOMAIN && !strchr(qdomain, '.'))
138
    if ((serv->flags & SERV_FOR_NODOTS) && *type != SERV_HAS_DOMAIN && !strchr(qdomain, '.') && namelen != 0)
139
      {
139
      {
140
	unsigned short sflag = serv->addr.sa.sa_family == AF_INET ? F_IPV4 : F_IPV6; 
140
	unsigned short sflag = serv->addr.sa.sa_family == AF_INET ? F_IPV4 : F_IPV6; 
141
	*type = SERV_FOR_NODOTS;
141
	*type = SERV_FOR_NODOTS;
Lines 195-201 Link Here
195
      else
195
      else
196
	log_query(F_CONFIG | F_FORWARD | flags, qdomain, *addrpp, 0, NULL, 0);
196
	log_query(F_CONFIG | F_FORWARD | flags, qdomain, *addrpp, 0, NULL, 0);
197
    }
197
    }
198
  else if (qtype && (daemon->options & OPT_NODOTS_LOCAL) && !strchr(qdomain, '.'))
198
  else if (qtype && (daemon->options & OPT_NODOTS_LOCAL) && !strchr(qdomain, '.') && namelen != 0)
199
    flags = F_NXDOMAIN;
199
    flags = F_NXDOMAIN;
200
    
200
    
201
  if (flags == F_NXDOMAIN && check_for_local_domain(qdomain, now, daemon))
201
  if (flags == F_NXDOMAIN && check_for_local_domain(qdomain, now, daemon))
Lines 216-228 Link Here
216
  char *domain = NULL;
216
  char *domain = NULL;
217
  int type = 0;
217
  int type = 0;
218
  struct all_addr *addrp = NULL;
218
  struct all_addr *addrp = NULL;
219
  unsigned int crc = questions_crc(header, (unsigned int)plen, daemon->namebuff);
219
  unsigned short flags = 0;
220
  unsigned short flags = 0;
220
  unsigned short gotname = extract_request(header, (unsigned int)plen, daemon->namebuff, NULL);
221
  unsigned short gotname = extract_request(header, (unsigned int)plen, daemon->namebuff, NULL);
221
  struct server *start = NULL;
222
  struct server *start = NULL;
222
  unsigned int crc = questions_crc(header,(unsigned int)plen, daemon->namebuff);
223
    
223
  
224
  /* may be no servers available. */
224
  /* may be  recursion not speced or no servers available. */
225
  if (!daemon->servers)
225
  if (!header->rd || !daemon->servers)
226
    forward = NULL;
226
    forward = NULL;
227
  else if ((forward = lookup_frec_by_sender(ntohs(header->id), udpaddr, crc)))
227
  else if ((forward = lookup_frec_by_sender(ntohs(header->id), udpaddr, crc)))
228
    {
228
    {

Return to bug 106717