Does SelectableChannel.register block until Selector.select completes

Hey all,
Quick question. If I have 2 threads and I am trying to register a SocketChannel with a selector from one, and the other is currently in a selection operation. Does the registering operation block until the select operation finishes?
i.e. The below appears to block indefinitely. Is this behavior avoidable, or do I need to force a selector wake-up to finish registering?
public class RegisterLock {
     * @param args
    public static void main(String[] args) throws Exception {
        ServerSocketBinder binder = new ServerSocketBinder(false);
        final ServerSocket server = binder.acquireServerSocket();
        final ServerSocketChannel serverSocket = binder.acquireServerSocketChannel();
        serverSocket.configureBlocking(false);
        final Selector sel = Selector.open();
        serverSocket.register(sel, SelectionKey.OP_ACCEPT);
        Thread t = new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) { }
                try {
                    SocketChannel socket = SocketChannel.open();
                    socket.configureBlocking(false);
                    socket.connect(new InetSocketAddress(server.getInetAddress(), server.getLocalPort()));
                    System.out.println("Registering socket with selector...");
                    socket.register(sel, SelectionKey.OP_CONNECT);
                    System.out.println("Successfully registered socket with selector.");
                    System.exit(0);
                } catch (IOException e) { }
        t.start();
        System.out.println("Beginning select operation");
        sel.select();
}

Yes. Both operations synchronize on the same data structure. There are three answers:
(a) selector.wakeup() before registering. Ensure your select() loop copes correctly with a selection result of zero, i.e. just does background operations and continues, doesn't treat it as a failure
(b) Use a short selection timeout. Same remarks apply
(c) use a queue of pending registrations and do all registration operations in the select() loop/thread.

Similar Messages

  • What causes Selector.select() to stop blocking?

    This relates to my previous post(http://forum.java.sun.com/thread.jsp?forum=4&thread=223743), but maybe if I ask a simpler question I can get an answer, so here goes...
    1) If you register a ServerSocketChannel with a Selector and OP_ACCEPT, a call to select() will block until a new connection request comes in, right?
    2) If you register a SocketChannel with a Selector and OP_READ, a call to select() will block until there is something to read, right?
    3) If you register a SocketChannel with a Selector and OP_WRITE, a call to select() will block until... until when?
    The code below will perform just as # 1 and #2 above specify, but select() on OP_WRITE happens only once then blocks on line 05 unless an OP_ACCEPT or OP_READ condition occurs, in which case everything continues. Also, when everything does continue the key that was registered OP_WRITE passes the isWritable() check on line 24 and correctly writes to the client! It seems being "writable" is not enough to stop the blocking of select().
    Any help would be appreciated.
    01            while (true)
    02            {
    03                 try
    04                  {
    05                        int numKeys = selector_.select(3000);
    06                        Set readyKeys = selector_.selectedKeys();
    07                        SelectionKey tempKey = null;
    08                        SelectableChannel tempChannel = null;
    09
    10                        for (Iterator i = readyKeys.iterator(); i.hasNext(); )
    11                        {
    12                              tempKey = (SelectionKey)i.next();
    13                              i.remove();
    14                              tempChannel = tempKey.channel();
    15
    16                              if (tempKey.isAcceptable())
    17                              {
    18                                    // Accept connections, works fine
    19                              }// end of if
    20                              else if (tempKey.isReadable())
    21                              {
    22                                    // Read stuff, works fine
    23                              }// end of if
    24                              else if (tempKey.isWritable())
    25                              {     
    26                                    fillBuffer(buffer_);//fills the buffer with something for the client
    27                                    ((SocketChannel)tempChannel).write(buffer_);
    28                                    buffer_.clear();
    29                              }// end of else if
    30                        }// end of for
    31                  }// end of while

    If you are running under Windows you might want to check out http://developer.java.sun.com/developer/bugParade/bugs/4469394.html

  • Block until repaint() completes ?

    I am currently writing an applet targetted towards Java 1.1.8.
    I am experiencing some display problems where VM does not redraw the screen promptly e.g. under heavy loads, or when running on a slow machine.
    My 'engine' works as follows. A Timer wakes the engine every x ms which then redraws all sprites and calls repaint(). However if repaint() does not redraw the screen before the engine runs again, some sprites may have moved twice, or more. This means that the sprite may not be erased completely.
    Is there anyway I can block until I know for sure that the screen has been repainted ?

    My 'engine' works as follows. A Timer wakes the engine
    every x ms which then redraws all sprites and calls
    repaint(). However if repaint() does not redraw the
    screen before the engine runs again, some sprites may
    have moved twice, or more. This means that the sprite
    may not be erased completely.I modified my code so that sprites are updated only when called from repaint()->update().
    This fixed the problem.

  • How to disable the complete block on the selection screen

    Hi,
    I want to disable the complete block of selection screen when user checks on box...how shall i go about this?
    I tried using block name as screen name and then modify screen but of no use..
    Any Pointers...
    Regards
    Gunjan

    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
    PARAMETERS: box as checkbox USER-COMMAND ch.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
    PARAMETERS: path(150) MODIF ID id1.
    SELECTION-SCREEN END OF BLOCK b3.
    AT SELECTION-SCREEN OUTPUT.
      IF box = 'X'.
        LOOP AT SCREEN.
          IF screen-group1 = 'ID1' .
            screen-active = '1'.
          ENDIF.
          MODIFY SCREEN.
        ENDLOOP.
      ELSE.
        LOOP AT SCREEN.
          IF screen-group1 = 'ID1' .
            screen-active = '0'.
          ENDIF.
          MODIFY SCREEN.
        ENDLOOP.
      ENDIF.
    Hope it will work
    Regards
    Sugumar G

  • How can I completely remove a plug-in from Aperture 2.4. Installing latest plug-in from HDR does not register with Aperture.

    How can I completely remove a plug-in from Aperture 2.4. Installing latest plug-in from HDR does not register with Aperture.

    It is not a good idea, to manually delete registry keys. Java uninstaller removes all registry entries that are needed to perform clean future installation.
    You might see some of the keys not removed by Java unistaller but they do not prevent any user from doing fresh installation of Java in future.
    Java removal tool is currently being developed, but that is for removing old/unsecure and unsupported Java versions. The tool isn't really intended to remove current/above security baseline versions of Java.
    Also, the tool does a standard un-install using msiexec /x. It won't specifically delete registry keys - it lets msiexec do it.

  • I tried to buy an app init the app store with my registered debit card. Due toinsufficient funds payment was rejected. However whenever i try to download a free app now iTunes will not allow until this payments completed!!!! this is so frustrating.

    I tried to buy an app init the app store with my registered debit card. Due to insufficient funds payment was rejected. However whenever i try to download a free app now iTunes will not allow until this payments completed!!!! this is so frustrating. Help

    If you're unwilling to use a gift card or credit card to complete the transaction, you need to click here and ask the iTunes Store staff for assistance.
    (117750)

  • Java NIO - Key Cancellation and Registering with New Selector

    Hi
    Sometimes when a channel is unregistered from a particular selector (key.cancel() ) and then registered with another selector, the registration does not happen. It just blocks in that registration method..It does not execute after that..
    I am doing
    key.cancel();
    selector2.wakeup();
    channel.register(selector2, SelectionKey.OP_READ,this);
    System.out.println("Associated with another selector");The System.Out does not get executed, and blocks at earlier statement.
    What could be the reason?
    What is the best way to deregister with a selector and register to another selector
    Thanks

    Synchronization is the reason. register() and select() are synchronized against each other. wakeup() causes the select() to exit but if the selector got round its loop and back to select() before this code got to execute the register it will still block of course.
    You could have selector2's select loop do a little sleep if it finds zero ready keys, or maybe reduce its selection timeout so that register will only block for a finite amount at worst.
    I don't think selection timeouts should ever be infinite and in practice I rarely set them above a minute. If that's still too long to wait you could consider reducing it further.

  • Why does Firefox always block any link I try to open going to a web page when I don't have pop up blocker on?

    Why does Firefox always block any link I try to open going to a web page when I don't have pop up blocker on? First off they are not even pop ups....your crap blocks everything and don't save user names &/or passwords when you have it checked. Also in your tutorials about solving this issue says it has the word "OPTION" .......no, it never says option to allow you to bypass it and etc. Only thing is says is "ALLOW" . That would be nice , but the problem is it will not allow it from then on. It only allows it right then and then you have to refresh...after that to open again it blocks it again.....HOW STUPID?!!!!!
    It always say that this is preventing this page from automatically redirecting to another page. THIS IS WHAT I AM TRYING TO DO...GO TO ANOTHER PAGE........I DON'T NEED YOUr BROWSERS PERMISSION TO DO THAT. THAT IS WHAT A *%#$&*(&*%$$%% BROWSER IS FOR TO GO TO OTHER PAGES......THEY ARE NOT POP UPS!!!!!
    YOU STUPID BROWSER ACTUALLY BLOCKS EVERYTHING AND THAT SUX!!!
    HELP!!

    Are you using "Clear history when Firefox closes"?
    In case you are using "Clear history when Firefox closes":
    *do not clear the Cookies
    *do not clear the Site Preferences
    *Tools > Options > Privacy > Firefox will: "Use custom settings for history": [X] "Clear history when Firefox closes" > Settings
    *https://support.mozilla.org/kb/Clear+Recent+History
    Note that clearing "Site Preferences" clears all exceptions for cookies, images, pop-up windows, software installation, and passwords.
    Clearing cookies will remove all specified (selected) cookies including cookies with an allow exception that you want to keep.
    Let all cookies expire when you close Firefox.
    *Firefox/Tools > Options > Privacy > Cookies: Keep until: I close Firefox
    You can choose to keep third-party cookies from visited sites if necessary.
    Create a cookie 'allow' exception for cookies that you want to keep.
    *Firefox/Tools > Options > Privacy > Cookies: Exceptions

  • Drive Utility Help Viewer "does not know how to handle selected URL"

    I have Drive Utility 10.5.6, according to . I'm trying to reformat a FAT32 partition on an external drive to Mac OS X Ext. Journaled in preparation for using SuperDuper to back up my Mac HD boot partition. For a time, which seems to have passed, now that erasing the partition has been done. The Disk Utility Help wouldn't work. Instead of putting up topic information, I got a message saying "Help Viewer does not know how to handle selected URL", followed by an reference to an html file that allegedly existed inside a set of folders inside the app. Where, of course, Finder cannot see. Once the erasing was done, Help seems to have come back. I tried Apple Support, but could only get a reference to OS 9 Appleworks macros not working in OS X. No help at all. Is this a question? I don't know. Help is working now. But for a while it was very annoying. It must be one of those little windows glitches that no one ever bothered to fix.

    In order to change a FAT or NTFS formatted drive for use with OS X you will need to do the following:
    Extended Hard Drive Preparation
    1. Open Disk Utility in your Utilities folder.
    2. After DU loads select your hard drive (this is the entry with the mfgr.'s ID and size) from the left side list. Click on the Partition tab in the DU main window.
    3. Under the Volume Scheme heading set the number of partitions from the drop down menu to one. Set the format type to Mac OS Extended (Journaled.) Click on the Options button, set the partition scheme to GUID (for Intel Macs) or APM (for PPC Macs) then click on the OK button. Click on the Partition button and wait until the process has completed.
    4. Select the volume you just created (this is the sub-entry under the drive entry) from the left side list. Click on the Erase tab in the DU main window.
    5. Set the format type to Mac OS Extended (Journaled.) Click on the Options button, check the button for Zero Data and click on OK to return to the Erase window.
    6. Click on the Erase button. The format process can take up to several hours depending upon the drive size.
    If you have an Intel Mac and can partition the drive using GUID then you can have FAT32 and OS X partitions on the same drive.
    As for problems with the Help viewer see:
    In most cases doing the following will restore the Help Viewer:
    1. Trash the following three files, if extant:
    /Home/Library/Preferences/com.apple.help.plist
    /Home/Library/Preferences/com.apple.helpui.plist
    /Home/Library/Preferences/com.apple.helpviewer.plist
    2. Trash the /Home/Library/Caches/com.apple.helpui folder.
    3. Empty the Trash and Restart.
    Visit The XLab FAQs and read the FAQ on the Help Viewer for additional suggestions.

  • My Ipod has lost all my play list and when I press a app icon it does not register it., My Ipod has lost all my play list and when I press a app icon it does not register it.

    My son's Ipod touch has lost all it's music and when he selects a app this does not register and it returns to the main screen.
    It is a year old.
    We tried to restore all his music on the I Tunes libary but this also did not work.
    Can anyone one put us on the right track and restore his songs and save him moaning

    - First try resetting the iPod.
    Reset iPod touch:  Press and hold the On/Off Sleep/Wake button and the Home
    button at the same time for at least ten seconds, until the Apple logo appears.
    - If still problem restore the iPod from backup via iTunes on the computer
    - If still problems restore the iPod to factory defaults/new iPod since there may be some corruption that is also in the backup.

  • Help Solving: Does not contain a definition for 'Select'.....

    Hi,
    Need help solving a Task that returns a Task<IEnumerable<Writing>> so I can fill ObservableCollection<ViewModels.IWritingItemViewModel> Writings for my
    Design Time Data Page:
    <d:Page.DataContext>
    <designTimeData:MainPageViewModel />
    </d:Page.DataContext>
    My constructor does this:
    public MainPageViewModel()
    var writings = this.GetGroupsAsync();
    this.Writings = new ObservableCollection<ViewModels.IWritingItemViewModel>();
    var viewmodels = writings.Select((x, i) => new WritingItemViewModel
    Writing = x,
    VariableItemSize = (i == 0) ? Common.VariableItemSizes.Writings : Common.VariableItemSizes.Normal,
    My var writings = this.GetGroupsAsync(); is:
    public async Task<IEnumerable<Writing>> GetGroupsAsync()
    await this.GetMenuDataAsync();
    return this.Groups;
    which in turn gets data from:
    private async Task GetMenuDataAsync()
    Uri dataUri = new Uri("ms-appx:///DesignTimeData/MenuData.json");
    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
    string jsonText = await FileIO.ReadTextAsync(file);
    JsonObject jsonObject = JsonObject.Parse(jsonText);
    JsonArray jsonArray = jsonObject["Groups"].GetArray();
    foreach (JsonValue groupValue in jsonArray)
    JsonObject groupObject = groupValue.GetObject();
    Writing group = new Writing(
    groupObject["UniqueId"].GetString(),
    groupObject["IsHeaderInteractive"].GetBoolean(),
    groupObject["ViewType"].GetString(),
    groupObject["ModelType"].GetString(),
    groupObject["Page"].GetString(),
    groupObject["Title"].GetString(),
    groupObject["Subtitle"].GetString(),
    groupObject["ImagePath"].GetString(),
    groupObject["Description"].GetString(),
    groupObject["GroupId"].GetString()
    foreach (JsonValue itemValue in groupObject["WritingMenus"].GetArray())
    JsonObject itemObject = itemValue.GetObject();
    group.WritingMenus.Add(new WritingMenu(
    itemObject["UniqueId"].GetString(),
    itemObject["Page"].GetString(),
    itemObject["Title"].GetString(),
    itemObject["Subtitle"].GetString(),
    itemObject["ImagePath"].GetString(),
    itemObject["Description"].GetString(),
    itemObject["Content"].GetString(),
    itemObject["WritingsId"].GetString(),
    itemObject["GroupId"].GetString(),
    Convert.ToInt32(itemObject["Item"].ValueType)
    this.Groups.Add(group);
    and I get this Error:
    Error 5 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<App1.DesignTimeData.Writing>>'
    does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type
    'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<App1.DesignTimeData.Writing>>'
    could be found (are you missing a using directive or an assembly reference?)
    I'm creating collections of:
    public interface IWritingItemViewModel : Common.IVariableSizedItem
    Models.Writing Writing { get; set; }
    and my class for creating data is:
    public class Writing
    public Writing(
    string uniqueId,
    bool isHeaderInteractive,
    string templateType,
    string viewModelType,
    string page,
    string title,
    string subtitle,
    string imagePath,
    string description,
    string groupId
    this.UniqueId = uniqueId;
    this.IsHeaderInteractive = isHeaderInteractive;
    this.TemplateType = templateType;
    this.ViewModelType = viewModelType;
    this.Page = page;
    this.Title = title;
    this.Subtitle = subtitle;
    this.ImagePath = imagePath;
    this.Description = description;
    this.GroupId = groupId;
    this.WritingMenus = new ObservableCollection<WritingMenu>();
    public string UniqueId { get; private set; }
    public bool IsHeaderInteractive { get; private set; }
    public string TemplateType { get; private set; }
    public string ViewModelType { get; private set; }
    public string Page { get; private set; }
    public string Title { get; private set; }
    public string Subtitle { get; private set; }
    public string ImagePath { get; private set; }
    public string Description { get; private set; }
    public string GroupId { get; private set; }
    public virtual ObservableCollection<WritingMenu> WritingMenus { get; private set; }
    How can I solve or successfully complete this code?
    Thanks!...
    Code is like a box of chocolates!...

    I looked into your error message again, I found something interesting:
    Error 5
    'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<App1.DesignTimeData.Writing>>'
      does not contain a definition
    for 'Select'
    and no extension method
    'Select' accepting a first argument of type
      'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<App1.DesignTimeData.Writing>>'
      could be found (are you missing a
    using directive or an assembly reference?)
    That means: Task does not contain the definition for Select. This was reasonable, Task does not inherit IEnumerable interface.
    var viewmodels = writings.Select((x, i) => new WritingItemViewModel
    Writing = x,
    VariableItemSize = (i == 0) ? Common.VariableItemSizes.Writings : Common.VariableItemSizes.Normal,
    public async Task<IEnumerable<Writing>> GetGroupsAsync()
    You need get the IEnumerable<Writing> for Select use. See this for more information:
    How to: Return a Value from a Task
    --James
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • "OpenDocument()" blocked until other report returns

    <p>Hello,</p><p> I am making a component in a J2EE application to view Web Intelligence reports. I built it around a sample from BO website, and everything was going just fine, until I faced a strange error. If you could help me with it, I would be very grateful.</p><p> <strong>Error scenario:</strong> I open a report from the application, enter the values for the prompts, and press "Run Query". While waiting for the query to return, I try to open another report through the application, but the report does not open until the first one has returned!</p><p> <strong>Alternate scenarios:</strong> the error does not happen in any alternate scenario. If I open the 2nd report before pressing "Run Query" in the first one, it opens fine. I did not see this error in any scenario other than the one outline above.</p><p> <strong>Implementation Notes:</strong> I wrote my component as to make one log on for the whole application (using one user session until it expires, and then logging on again). I guess this has something to do with my error.</p><p> <strong>My analysis:</strong> I didn&#39;t try to debug in it, but it seems to me that the method "ReportEngine.openDocument(int)" blocks until the first report returns. It seems that this is somehow related to having one user session, as I tried to make a similar scenario, but opening the 2nd report from the InfoView, effectively making it from another session (but using the same user). The report opened from the InfoView fine. I tried to open two reports from the InfoView, but I noticed that right-click was disabled. I had to open a new window and make a new logon to open another report, which made me think this is probably my problem.</p><p> <strong>My suggestions:</strong> If my analysis is correct, then I need to make a separate logon session with BO for every user of my application. In the extreme case, I would have to make a separate logon session for every report opened through my application. I would need that latter case if I&#39;m going to allow the user to simply open two reports in two windows (e.g. by right-clicking a link and choosing "Open in new window").</p><p> I wonder whether my analysis is correct, and if so, whether my suggested solution is the one I should do.</p><p> Could you please help me with this issue? I&#39;d be really thankful.</p><p> Good luck everyone.</p>

    When I have been experiencing the problem I have described, there have always been at least three reports being called within a second of each other, many cases five or more within a second.
    Knowing that there is a limit of three concurrent jobs could explain why a report would not run, however should a report job never return if it is there is no license available? At worst I'd expect it to throw an error, which is handled and logged.
    We are now trying to invoke the thread slightly different to allow only one report to run at a time. So far it seems fairly lousy for performance, but I haven't seen that lockup yet.
    I'm going to look into using ReportDocument.GetConcurrentUsage() also, however the problem with that is a deployment issue. We have hundreds of report dll's that would need to be changed - then we would have to get the people in the field to update to the new reports. I'd rather fix it at the application level as we have much greater control of the updating of the application.

  • HT4641 Im trying to print off my cv, page 1 prints off fine but page 2 does not, I'm using the selected template for curriculum vitae why does my page 2 not print?

    Im trying to print off my cv, page 1 prints off fine but page 2 does not, I'm using the selected template for curriculum vitae why does my page 2 not print?

    Hi @kots 
    I suspect your question would be better answered in the HP Enterprise Business Community, as your HP Printer is a commercial model.
    My technical expertise is with consumer products and software, I am sure the commercial folks would be happy to help if you re-post your question for them to answer. The HP Enterprise Business Community is an HP Forum designed for the Commercial and Enterprise customers to help one another. I am sure you will find some HP folks there to help too.
    Click here to view the Printing and Digital Imaging. When the page opens you will see the option to 'Log in' or 'Register Now' on the right. The commercial forums are separate from the consumer boards, thus you will need to register if you don't already have a commercial account.
    You may find the HP LaserJet M2727 Multifunction Printer series page helpful while you wait for somebody in the commercial Forum to respond to your inquiry.
    Best of luck.
    Please click the Thumbs up icon below to thank me for responding.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Please click “Accept as Solution” if you feel my post solved your issue, it will help others find the solution.
    Sunshyn2005 - I work on behalf of HP

  • Does iPad/apple block access to some websites without my permission?

    Does iPad/apple block access to some websites without my permission?

    There is in fact no native ability in iOS to block specific web sites. All you can do is turn off Safari completely.
    As the others have suggested, either those sites are not compatible with the browser in iOS (being based on Flash or Java, or using Microsoft-proprietary components that work only in Internet Explorer, for instance), or your Internet connection is blocking the sites.
    Regards.

  • Missing message: Selection completed

    Hi,
    I'm loading from the source system, but it does not send a message over to the BW system telling that the selection has ended. I have check the job in the source system and it's completed but while on the bw side, it's still waiting for a selection completed message to complete the whole data load.
    Does anyone has clue what is this happening? It works fine in the Development and Quality System, but this problems occurs in the production system.
    Thanks in advance,
    Best Regards,
    CK

    Hi CK Tan,
        Please check the Idoc status of ARFCSTATE at job details in the source system side.
    If ARFCSTATE  = RECORDED is that packet is arrived in the bw System
    If ARFCSTATE  = CPICERR that data packet was not arrived in the system.
    For every data packet it will genera the result of ARFCSTATE at job details...
    By seeing the job details you can analyze weather your data has uploaded successfully in to BW system or not..
    Regards,
    PRK

Maybe you are looking for

  • Macbook Pro 17" early 2011 Discrete GPU failure

    Hi, before I start, this is the serial of my MBP so you can identify the exact model. MBP 17" Core i7 2.2 Ghz serial number C0*******F92 My Macbook pro 17" (early 2011) started to freeze once a month, but then, it started getting worse.  I narrowed d

  • Macbook pro doesn't work after EFI update.

    My new macbook pro doesn't work. I bought it yesterday and after I've installed EFI update (it installed without any errors) my mac "starts" with blank screen, no chime sound, with fans on (I guess - it's full speed). I've already tried those tricks

  • Help on proper Apps uninstall. Thank you.

    Hey everyone. I own a MacBook running on 10.5.8 Leopard. This being the first Mac I ever bought and since my Mac OS knowledge at that time was limited, whenever I wanted to delete an app, I would just drag the app itself to the trash not knowing abou

  • Display resolution (dpi)

    Hi, I was doing some scaling from my private pictures and wanted to fit the size perfectly on my mbp display. So, I knew, I have a native resolution of 1680x1050, but there is a third factor: The dpi. The "standard" is 72 dpi for all pictures you wan

  • 2.01 update failed.  Here we go again!!!

    Are any others having to updates fail only to be left with a non-resonsive iphone that is locked on the "connect to itunes" pic? This happens to me on every update. The update downloads, installs, then at the end of the install, I get an unknown erro