- if(!ret) {
- unsigned char* newbuf;
-
- realloc:
- newbuf = (unsigned char*) realloc(buffer, buflen);
-
- if(!newbuf) {
- if(buffer) free(buffer);
- message = "Memory allocation failure in scan";
- return NULL;
- }
-
- buffer = newbuf;
-
- wrq.u.data.pointer = buffer;
- wrq.u.data.flags = 0;
- wrq.u.data.length = buflen;
-
- if(iw_get_ext(coso->sock, coso->ifname, SIOCGIWSCAN, &wrq) < 0) {
- if((errno == E2BIG)) {
- if(wrq.u.data.length > buflen) buflen = wrq.u.data.length;
- else buflen *= 2;
-
- goto realloc;
- }
-
- if(errno == EAGAIN) {
- tv.tv_sec = 0;
- tv.tv_usec = 100000;
- timeout -= tv.tv_usec;
-
- if(timeout > 0) continue;
- }
-
- free(buffer);
-
- message = "Unable to read scan data";
-
- return NULL;
- }
-
- else break;
- }
- }
-
-
- if(wrq.u.data.length) {
- struct iw_event iwe;
- stream_descr stream;
- int ret;
- void* scan_dict = NULL;
-
- iw_init_event_stream(&stream, (char*)(buffer), wrq.u.data.length);
-