forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Some sceNet / sceHttpInit usage questions
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development
View previous topic :: View next topic  
Author Message
Mr_Bogus



Joined: 09 Apr 2005
Posts: 3
Location: Stockholm

PostPosted: Mon Jun 27, 2005 11:50 pm    Post subject: Reply with quote

I have managed to get ifhandle.prx loaded and started from ms without any errors.
But when i try to load and start pspnet.prx after that i get 80020148 error.

All prx are extraced from the same game that i own.

Anyone that knows what may be the problem?
Back to top
View user's profile Send private message
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Tue Jun 28, 2005 2:04 am    Post subject: Reply with quote

TRF-Yu-Ki wrote:
> So PspPet patched the entry points himself; before that patch... calling sceNetInit() would put the Instruction-pointer where? I guess since he got it working, what I'm saying now is pointless. But, I'm just curious how a call to a non-existant routine wouldn't crash.

Still a good question. The STUBs are 8 byte routines (room for 2 mips opcodes). When not resident they are a "SWI" (software interrupt system trap) followed by NOP. If you call them and they are not resident you get that error code.
For regular entries there is a different SWI to switch to kernel mode to do "ForUser" entries. My patch hack replaces them with direct "j" jump instructions (user to user space)

In theory the not resident SWI *should* check first and patch them itself - but that's not working as expected (or something else is confusing the system)

-----
Mr_Bogus wrote:
> I have managed to get ifhandle.prx loaded and started from ms without any errors.
> But when i try to load and start pspnet.prx after that i get 80020148 error.
> All prx are extraced from the same game that i own.

I hit the same problem:
"ifhandle.prx" is encrypted and therefore loads. "pspnet.prx" is not encrypted ("ELF") and won't load.
[[If you think about it, it would be a bad thing, for Sony, for the system to load unencrypted prxs from memory stick ]]

Loading from "flash0:/kd/" works (all are encrypted), more legal, and they do have all the core libraries.

=====
re: Patch tricks and socket sample app
I'll clean up the current slimey trick and make it 1.0/1.50 aware and post it sometime soon.
After you get past the load/init hassles, the sceNetInet library is almost identical to standard Berkeley style sockets. Very easy to write simple and relatively standard socket based apps (eg: telnet to your PSP, UDP, roll your own HTTP, ...). Separate there is the HTTP helper library which is a PSP unique feature (haven't looked at that yet)
Back to top
View user's profile Send private message Send e-mail Visit poster's website
LiquidIce



Joined: 04 Apr 2005
Posts: 55

PostPosted: Tue Jun 28, 2005 3:24 am    Post subject: Reply with quote

That is great news PspPet! Thanks for all of the info and tips. I'm looking forward to playing around with the code you wrote, as well as exploring other PRX files, now that you've discovered how to load them correctly.

Just to get people thinking on the possibilities this has... here are a few ideas:

-Adding netcode to games to make them multiplayer
-Adding 2 player network mode to the emulators
-Video/Audio/Game Download Applications
-EBoot Auto-Updater (dangerous, i know...)
-Integration with Web Services - SNMP Management
-Control and monitoring of other electronic devices (-PSP Home Control 2.0!!! (may require additional hardware))
-PVR Remote Scheduling
-PSP Web Browser (possibly porting over lynx, or pocket mozilla)
-Email App
-RSS Reader
-Video Confrencing / Video Chat (If Sony ever releases a camera, or if we can hack our own to use the USB port - still months away, i know)
-Skype / VOIP
-Net Stumbler - Wifi access point finder / strength tester (dubayou has been working on this for months... where is the eboot?? lol)

Cheers!
Back to top
View user's profile Send private message Visit poster's website
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Wed Jun 29, 2005 4:41 am    Post subject: Reply with quote

> re: Patch tricks and socket sample app
> I'll clean up the current slimey trick and make it 1.0/1.50 aware and post it sometime soon.

http://aibohack.com/psp/wifi_sample_001.zip

Very primitive, very lame telnetd-like test app.
Based on nem's HelloWorld app structure (not using any "sdk", extra fluff stripped out). Works on 1.0 or 1.50.
[built with ooPo's psptoolchain under Cygwin but others should work]

Lots of work to flesh out, but doesn't make sense until there is a more stable SDK (and added in a standard "socket.h" format)
Should help if you need to dive into WiFi features right now.
----
Read the README.TXT file. The app start up, connects to the *only* Infrastructure connection [if it stops at "00000003", then turn off DHCP].
Then you can telnet to the PSP from your PC. The PSP will show what you type.

Not meant to be a full example (and certainly not a real telnetd server). Good for illustrating the PRX load tricks, patching tricks and general LAN initialization for Infrastructure mode (Access points). Go crazy.
NOTE: if you want to merge code to your own program, look for "SLIME NOTE" comments. All the network library glue and patching is in "nlh.c"
Back to top
View user's profile Send private message Send e-mail Visit poster's website
KaL



Joined: 03 Apr 2005
Posts: 41

PostPosted: Wed Jun 29, 2005 5:10 am    Post subject: Reply with quote

Can ping. Not telnet. I probably did something wrong. (I'm running on 1.5 , "infrastructure" mode, on a static IP.)

It's funny to notice that when the console is on stand-by, the ping does not respond :)
Back to top
View user's profile Send private message
jimparis



Joined: 10 Jun 2005
Posts: 1179
Location: Boston

PostPosted: Wed Jun 29, 2005 5:16 am    Post subject: Reply with quote

PspPet wrote:

Very primitive, very lame telnetd-like test app.

Impressive! I can telnet and it displays what I type. Works great here (1.5).

PspPet wrote:

if it stops at "00000003", then turn off DHCP

It also stops at 00000003 if you leave the SSID blank. I had to explicitly set my SSID for it to work.


Last edited by jimparis on Wed Jun 29, 2005 5:17 am; edited 1 time in total
Back to top
View user's profile Send private message
Hippo



Joined: 25 Jun 2005
Posts: 19

PostPosted: Wed Jun 29, 2005 5:16 am    Post subject: Reply with quote

Haha, awesome. I just had a friend of mine connect to it, and he's... well, he's far away. Most excellent!
Back to top
View user's profile Send private message
woehrl



Joined: 29 Jun 2005
Posts: 2

PostPosted: Wed Jun 29, 2005 5:39 am    Post subject: Reply with quote

this is absolutly awesome, but i don't really know how the programm knows which settings it should use
and the refreshing on the PSP takes sometimes up to minutes, but it's absoluteley great for this state!
Back to top
View user's profile Send private message
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Wed Jun 29, 2005 5:56 am    Post subject: Reply with quote

I haven't figured out all the configuration enumeration code (mostly from Wipeout, which has a real UI to pick the configuration).

Right now it should work if you have one configuration, setup using explicit SSID and IP address.

> refreshing on the PSP takes sometimes up to minutes,
I think that's because of the send buffering (TCP/IP). If you close the connection it will flush it immediately (and exit the PSP app).
Back to top
View user's profile Send private message Send e-mail Visit poster's website
LiquidIce



Joined: 04 Apr 2005
Posts: 55

PostPosted: Wed Jun 29, 2005 9:33 am    Post subject: Reply with quote

PspPet, you are the man!! Thanks for making the seemingly impossible, a reality. Your efforts are greatly appreciated and good things are to come of your hard work. Thanks again!

BTW, I can't wait to see THIS in action...

#ifdef TEST_AIBO
TestAiboPoll(szMyIPAddr);
#endif

Make sure you get some good video. :-)
Back to top
View user's profile Send private message Visit poster's website
tourettes



Joined: 29 Jun 2005
Posts: 1

PostPosted: Wed Jun 29, 2005 1:35 pm    Post subject: Reply with quote

help!!

like i put the wifi test files on my psp, and started the app, and then on my psp I get this message

Connecting
00000000

I cant do anything after this, nothing gets me out of this, not even turning this off or taking the memory card out. How to get this problem fixed?
Back to top
View user's profile Send private message
sq377



Joined: 11 Apr 2005
Posts: 87

PostPosted: Wed Jun 29, 2005 2:47 pm    Post subject: Reply with quote

pull out the battery, and the memory stick. Put back in the battery after a few seconds, then try turning it back on.
Back to top
View user's profile Send private message AIM Address MSN Messenger
Shazz



Joined: 31 Aug 2004
Posts: 244
Location: Somewhere over the rainbow

PostPosted: Wed Jun 29, 2005 10:23 pm    Post subject: Reply with quote

Hum hum, what about a ps2link-like server on the psp ??? :D

I definitively need to buy a wifi router, a shame wifi adhoc connections don't work...

By the way, great work PspPet :D
_________________
- TiTAN Art Division -
http://www.titandemo.org
Back to top
View user's profile Send private message Visit poster's website
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Wed Jun 29, 2005 11:59 pm    Post subject: Reply with quote

re: AIBO
Still working on the AIBO stuff (connection timeout problems right now).

Re: connection woes
If you see "Connecting 00000000 " and it never increases, then the connection is failing very early on. Is the WiFi light turning on?

Check your Infrastructure connection, and test it. If the access point can't be found it will stay at "Connecting 00000000 "

As mentioned pop the battery when done or if you have a problem (I stripped the standard exit code from the sample to make it as focused as possible). Shouldn't need to remove the memory stick.

> a shame wifi adhoc connections don't work...
The adhoc initialization is different. In the game uses it is used for game sharing/interplay.
Don't know if an adhoc connection to a PC will work if you have the IP addresses all set manually (need to try that)
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Cool Matty



Joined: 30 Jun 2005
Posts: 7

PostPosted: Thu Jun 30, 2005 12:27 am    Post subject: Reply with quote

Using telnet at the moment, would it be possible to have a "computer monitoring" setup?

Like, lets say I set up a cron job to telnet the PSP new data every minute. Would that work?

Hmm, after reading again, it looks like it might not. Would it be possible to set up the PSP to receive information from telnet as usual, but refresh the information upon each connection, instead of closing the program? (Then press a button to close the program instead, or use the home button)
Back to top
View user's profile Send private message
Nick Fury



Joined: 22 Jun 2005
Posts: 45

PostPosted: Thu Jun 30, 2005 12:37 am    Post subject: Reply with quote

Cool Matty wrote:
Using telnet at the moment, would it be possible to have a "computer monitoring" setup?

Like, lets say I set up a cron job to telnet the PSP new data every minute. Would that work?

Hmm, after reading again, it looks like it might not. Would it be possible to set up the PSP to receive information from telnet as usual, but refresh the information upon each connection, instead of closing the program? (Then press a button to close the program instead, or use the home button)


While your ideas are nifty I think you are missing the point of the program. The point being to demonstrate that networking (psppet can correct me if I'm wrong about this, I dont know what the hell he/she is thinking) is more than possible on this device. It's meant to be more of a proof of concept than a standalone app. Use the source and start coding out your very own system monitor.
Back to top
View user's profile Send private message
Squall333



Joined: 28 Apr 2005
Posts: 91

PostPosted: Thu Jun 30, 2005 2:58 am    Post subject: Reply with quote

Since its possible to telnet to your computer is it possible for 2 psp's to connect to each other and type back and forth?
Back to top
View user's profile Send private message AIM Address
Cool Matty



Joined: 30 Jun 2005
Posts: 7

PostPosted: Thu Jun 30, 2005 3:43 am    Post subject: Reply with quote

Nick Fury wrote:
Cool Matty wrote:
Using telnet at the moment, would it be possible to have a "computer monitoring" setup?

Like, lets say I set up a cron job to telnet the PSP new data every minute. Would that work?

Hmm, after reading again, it looks like it might not. Would it be possible to set up the PSP to receive information from telnet as usual, but refresh the information upon each connection, instead of closing the program? (Then press a button to close the program instead, or use the home button)


While your ideas are nifty I think you are missing the point of the program. The point being to demonstrate that networking (psppet can correct me if I'm wrong about this, I dont know what the hell he/she is thinking) is more than possible on this device. It's meant to be more of a proof of concept than a standalone app. Use the source and start coding out your very own system monitor.


I understand the point of it. It just seems like a simple modification of the source to get it to stay open until you use home.

Unfortunately, as simple as it is, I make no claim to my knowledge of C programming. (Which is slim to none) The furthest I ever got in C was your standard Hello World and arrays. I moved on to PHP, which was much simpler, and fit my purposes.

If it's too much trouble, that's fine, it was just a simple request, something would make this "proof of concept" program actually useful, besides just cool.
Back to top
View user's profile Send private message
Vini



Joined: 18 May 2005
Posts: 12

PostPosted: Thu Jun 30, 2005 8:36 am    Post subject: Reply with quote

How do you turn DHCP off?
Back to top
View user's profile Send private message
etx



Joined: 02 Apr 2005
Posts: 33
Location: Detroit

PostPosted: Thu Jun 30, 2005 8:42 am    Post subject: Reply with quote

Vini wrote:
How do you turn DHCP off?


Manually configure your network settings.
Back to top
View user's profile Send private message AIM Address
KaL



Joined: 03 Apr 2005
Posts: 41

PostPosted: Thu Jun 30, 2005 8:45 am    Post subject: Reply with quote

What about adding psppet's work into pspsdk ?
Back to top
View user's profile Send private message
Squall333



Joined: 28 Apr 2005
Posts: 91

PostPosted: Thu Jun 30, 2005 9:59 am    Post subject: Reply with quote

This is probably a stuid question but i hope someone can help. Is the code for this as short as it could be im only asking because i see the aibo stuff on the bottom. I want to learn how to write a simple program like this and am wondering how hard is this really?
Back to top
View user's profile Send private message AIM Address
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Fri Jul 01, 2005 1:34 am    Post subject: Reply with quote

[selective replies]
> Using telnet at the moment, would it be possible to have a "computer monitoring" setup?
As mentioned many things are possible. All will require a little C programming and familiarity with Berkeley sockets (/WinSock)
At this point it is a developer sample code program. A fuller more useful app may come later, or others may want to write one. If you want to dive into PSP programming, start with the PSPSDK and write something simple. If you want to dive into sockets programming, you can do that on your PC.

There are other similar PSP as a display server possibilities. For example being able to send a JPG from your PC to the PSP which shows it on the screen -- a simple wireless "picture frame". Another scenario - transmit the camera image from a Sony CLIE PDA to the PSP. Many things are possible.
----
> Since its possible to telnet to your computer is it possible for 2 psp's to connect to each other and type back and forth?
Yes - but "typing" on the PSP is tedious ;->
Many regular Wireless client apps are less interesting on the PSP since it lacks a keyboard or a touch screen. Better if you don't need elaborate input on the PSP (like the scenarios mentioned above)
----
> What about adding psppet's work into pspsdk ?
Eventually I'll move my sample app over to the pspsdk format. Requires similar STUB table tricks.
----
> Is the code for this as short as it could be
Close to it (the important parts of 'main.c' are very short). There are a few diagnostic features in it, but most has been stripped out for the release to focus on the test scenario

> im only asking because i see the aibo stuff on the bottom. I want to learn how to write a simple program like this and am wondering how hard is this really?
re: AIBO
If interested in AIBO programming, there are other resources. See the main AIBO part of my site (http://aibohack.com) or other AIBO centric BBS (eg: http://www.aibo-life.org). AiboCam/AiboRemote programs are already running on a number of platforms (including Palm PDA, PocketPC PDAs, Zipit Linux, as well as regular Windows). I will be making/porting/adapting AiboCam/AiboRemote for the PSP (my main motivation for doing all this work). Pimping for AiboPet.

re: how hard is it?
The LAN connection logic is perhaps the easiest part of these kinds of apps. There are general hassles dealing with bad connections or dropped connections, and other platform specifics. The "Berkeley socket" interface hasn't changed much in 20 years, so that tells you something.
Usually most of the work is the user interface. Reasonable graphic. Perhaps the most difficult on the PSP is living with the minimal input controls (8 buttons, analog stick). Great for games, but the PSP is not a PDA (no touch screen, keyboard or microphone)
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GeekMyRide



Joined: 06 Jul 2005
Posts: 1

PostPosted: Wed Jul 06, 2005 12:37 am    Post subject: So what do I compile this in... Reply with quote

Ok, n00b here to PSP development - what do I need to write and compile the source code I'm seeing here... couldn't find a primer for developers, but you guys are at the top of your game, sooooo ;)

Best,

-Auri
_________________
--
Yup, I wrote a book: http://www.GeekMyRide.net
Back to top
View user's profile Send private message Visit poster's website AIM Address
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Wed Jul 06, 2005 4:03 am    Post subject: Reply with quote

> ...what do I need to write and compile the source code I'm seeing here
Start with the PSPSDK
http://forums.ps2dev.org/viewforum.php?f=19

The sample code mentioned in this thread is using an older program structure. An improved version will be released soon, using the PSPSDK program structure.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
mrbrown



Joined: 17 Jan 2004
Posts: 1536

PostPosted: Thu Jul 07, 2005 5:07 am    Post subject: Patching proved to be unnecessary Reply with quote

Did a bit of experimentation last night and it seems that you don't have to patch any of the network module's stubs into your program.

If your program is running in kernel mode (via 0x1000 and thread attribute 0), and if you have delayed imports from a module, and you load and start that module, then it all just works. The main caveat is that you need to be running in the kernel memory space so that your code doesn't choke when jumping to an address that isn't memory mapped.

TyRaNiD has put code into PSPSDK's crt0.c to automatically switch your program into kernel space, and has updated his debugging code and samples to use kernel stubs directly.

So for now anything using delayed imports must use kernel mode, which was true even with the patching method. We're working on a way to allow folks to load modules from user mode and get them resolved as syscalls.
Back to top
View user's profile Send private message
Agoln



Joined: 08 Jun 2005
Posts: 326
Location: Fort Wayne, IN

PostPosted: Thu Jul 07, 2005 7:46 am    Post subject: Reply with quote

Ok, I have just pulled up some old code of mine that uses sockets, and there are a few things in it that I'm not quite sure how to handle. All of these are things that I didn't see in the sample, but yet have in my code.

Here they are:

HostEntry*
gethostbyname()
InetAddr*
SockAddr*

I know that the sockaddr_in struct replaced the SockInetAddr struct, but what about the SockAddr struct?

Any help here is well appreciated.

Thanks!
_________________
Lego of my Ago!
Back to top
View user's profile Send private message AIM Address
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Thu Jul 07, 2005 9:59 am    Post subject: Reply with quote

> if your program is running in kernel mode (via 0x1000 and thread attribute 0), and if you have delayed imports from a module, and you load and start that module
Thanks for the tip.
Qualification - the library module must be loaded into kernel memory space too (either naturally or forced)

This fixes some cases (like the simple "usbmode" sample).
However all the important sceNetLib? libraries complain if you try to force them to load into kernel memory (they want to be in user memory, which the system won't auto fixup)

========
> ...I have just pulled up some old code of mine that uses sockets
The socket interface is not yet complete, and will never will be 100% compatible with common features - and to say nothing of weird implementations ;->

>gethostbyname() and anything related to using host names instead of IP addresses
There is a resolver component. I suspect that would provide the needed functionality (in a very different way). Need some work to figure it out. If you can live with known IP addresses, so much the better...
> but what about the SockAddr struct?
Try the more basic "struct sockaddr" ??. Only the mainstream variations are in the header (focusing on TCP/IP and UDP/IP)

Even the 20 year old sockets standard is far from standard ;->
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Agoln



Joined: 08 Jun 2005
Posts: 326
Location: Fort Wayne, IN

PostPosted: Thu Jul 07, 2005 12:02 pm    Post subject: Reply with quote

Not sure if there was a reason for this, but...
Code:

// Socket address, internet style.
struct sockaddr_in {
        unsigned short sin_family; // REVIEW: is this correct ?
        unsigned short sin_port; // use htons()
        unsigned char sin_addr[4];
        char    sin_zero[8];
};


vs.

Code:

// Internet address (a structure for historical reasons)
struct in_addr {
      unsigned long s_addr; // that's a 32-bit long, or 4 bytes
};
   
// Socket address, internet style.
struct sockaddr_in {
        unsigned short sin_family; // REVIEW: is this correct ?
        unsigned short sin_port; // use htons()
        struct in_addr sin_addr;
        char    sin_zero[8];
};


not sure why it was a signed character, but according to http://www.ecst.csuchico.edu/~beej/guide/net/html/structs.html , which is how I learned them.... the struct was how to do it...

What's the reason for those?

EDIT*:

Also, if someone can help me out here... rinco has been trying for awhile and can't help me much, and I'm not too much help to myself.

When I run the binary that came with teh wifi sample, it gives me a thread ID of 039A3C13. When I run it myself, I get one that is darn near that, but not the same. Then, it goes into +start and hangs at this part of the code:
Code:
    u32* addr = (u32*)0x88014318;
    if (*addr != 0x27bdffd0)
    {
       addr = (u32*)0x88017308;
       if (*addr != 0x27bdffd0)
        {
            printf("ERROR: version error (find)!\n");
            return 0;   // something terribly wrong
        }
    }

It then just shut's off. Does anyone know the cause of this?

I cannot load the PRX from flash0:, it gives me a -2million number, i'm guessing uninit'd int. I am really frustrated and would really enjoy it if someone would be able to help me out. Thanks.
_________________
Lego of my Ago!
Back to top
View user's profile Send private message AIM Address
PspPet



Joined: 30 Mar 2005
Posts: 210

PostPosted: Fri Jul 08, 2005 1:37 am    Post subject: Reply with quote

re: sockaddr_in and char/unsigned char

Not sure what you are asking. I originally took mine from Winsock.
The current header in wifi_sample_001 is wrong. Please check this thread:
http://forums.ps2dev.org/viewtopic.php?t=2433
Code:

struct sockaddr_in {
   unsigned char sin_size; // // PSP specific - ignored
   unsigned char sin_family; // usually AF_INET
        unsigned short sin_port; // use htons()
        unsigned char sin_addr[4];
        char    sin_zero[8];
};

Ie. the "sin_family" field is 1 byte, the second byte.

=====
> When I run the binary that came with teh wifi sample, it gives me a thread ID of 039A3C13. When I run it myself, I get one that is darn near that, but not the same.
That's probably ok.

> Then, it goes into +start and hangs at this part of the code:

That is not ;->
Are you running the released binary (or a rebuilt one)?. What version of firmware ?
It does have hard coded addresses (which may be different with different versions of firmware, so the checks may fail - but it shouldn't crash on the checks (unless the kernel memory is not accessible)
======
If you are building your own sample: Your program needs to have access to KERNEL memory and run as a KERNEL thread (otherwise this trickery won't work)

If you based your program on the HelloWorld structure, take a look at the "startup.s" provided in wifi_sample_001. Merge the module flags and thread start attributes from my sample into your 'startup.s'
If you based your program on the PSPSDK (ie. no startup.s), then use:
Code:
PSP_MODULE_INFO(MY_APP_NAME, 0x1000, 1, 1);
PSP_MAIN_THREAD_ATTR(0);

NOTE: wifi_sample_002 (coming soon) uses the PSPSDK structure (and probably the pspDebugFind routines to avoid using hard coded addresses)

---
> I cannot load the PRX from flash0:, it gives me a -2million number,
That will happen if you don't have the right flags (can't load from flash0 from a user thread, or from the kernel mode startup code, or if the KMEM memory is not enabled) - which in turn causes other problems...
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PSP Development All times are GMT + 10 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group